2024CSP-S第二轮复赛题解
2024CSP-S第二轮复赛题解
#1.决斗
题目大意
其实这题是个原题,感兴趣的可以做一下。这题是求出那个数的个数最多。
题目解法
如果跟我一样考试时没看出来的也可以写一个双指针即可。
题目代码
1.正解
#include <bits/stdc++.h>
using namespace std;
const int kMaxN = 5010;
int a[kMaxN], n, sum = 1, ans;
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
sort(a + 1, a + 1 + n);
for (int i = n; i >= 1; i--) {
if (a[i] != a[i + 1]) {
ans = max(ans, sum), sum = 1;
} else {
sum++;
}
}
cout << max(sum, ans) << '\n';
return 0;
}
2.双指针
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int kMaxN = 1e5 + 10;
int a[kMaxN], n, j = 1;
signed main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
sort(a + 1, a + 1 + n);
for (int i = 1; i <= n; i++) {
if (a[i] > a[j]) {
j++;
}
}
cout << n - j + 1 << '\n';
return 0;
}