由于数据问题,我们可以使用 C++STL
里的 map
存储企鹅君选择的答案以及次数。
先定义一个 map
,用来储存答题情况。接着将企鹅君的答案存入 map
,顺便求出最大值。
maxans = max(maxans, mp[x]);
在计算最小值的的答案之前,需要进行特判,因为题目中 \(M\) 的数据达到了可怕的 \(10^9\),这也是为什么我们要选择使用 map
的原因。
当 \(M > N\) 时,说明在 \(M\) 个答案中,其中有一个选项企鹅君必定没有选到,而最小值只能为 \(0\)。
if (m > n) minans = 0;
否则求剩下的最小值答案即可。
else {
for (int i = 1; i <= m; i++) minans = min(minans, mp[i]);
}
最后贴上代码
#include <bits/stdc++.h>
#define ll long long
#define INF 1e9
using namespace std;
map<int, int> mp;
int n, m, minans = INF, maxans = -INF;
signed main() {
ios :: sync_with_stdio(0);
cin >> n >> m;
for (int i = 1; i <= n; i++) {
int x;
cin >> x;
mp[x]++;
maxans = max(maxans, mp[x]);
}
if (m > n) minans = 0;
else {
for (int i = 1; i <= m; i++)
minans = min(minans, mp[i]);
}
cout << minans << ' ' << maxans;
return 0;
}
标签:map,int,题解,maxans,minans,mp,INF,正答
From: https://www.cnblogs.com/xvl-/p/17220187.html