求助题解
  • 板块灌水区
  • 楼主xiaoyuchenp
  • 当前回复10
  • 已保存回复10
  • 发布时间2023/3/11 10:32
  • 上次更新2023/10/23 21:57:41
查看原帖
求助题解
758649
xiaoyuchenp楼主2023/3/11 10:32

dalao们可以帮忙看看本蒟蒻这题解哪里犯了 LaTeX 公式/英文/数字与汉字之间应加空格 的问题吗 题目

我找了 6 天了还没找到......

这道题用纯暴力做法就可以轻松AC,不过需要一些小技巧。

**思路**

首先需要说明的是,这道题用普通的数组是不能做到的,因为数组不可能开 $10^9$ 长度。因为涉及到“出现了几次”,因此考虑用 $\texttt{map}$ 存储。

在读入的同时求最大值,这个非常容易,不过求最小值要记住先判断 $m$ 是否大于 $n$ 。假如这样处理,就可以提前输出 $0$ ,避免了 TLE 这一点需要特别注意,本蒟蒻就是因为忽略了这一点而喜提多次 TLE 。

假如并非如此,则就可以遍历 $\texttt{map}$ 取最值,这时显然 $1 \le m \le 2 \times 10^{5}$ ,不会超时。

**code**

```cpp
#include<bits/stdc++.h>
#define MAXN 200005
using namespace std;
int n,m,maxn=-INT_MAX,minn=INT_MAX;
map<int,int>mp;

int main(){
	cin>>n>>m;
	for(int i=1,tmp;i<=n;i++){
   		cin>>tmp,mp[tmp]++;
   		maxn=max(maxn,mp[tmp]);
   }
	if(m>n)cout<<0<<' ';
	else{
		for(int i=1;i<=m;i++)
			minn=min(minn,mp[i]);
		cout<<minn<<' ';
	}
	cout<<maxn;
	return 0;
}

违规紫衫

2023/3/11 10:32
加载中...