社区讨论

求问做法正确性

P11231[CSP-S 2024] 决斗参与者 6已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@m2q6hejl
此快照首次捕获于
2024/10/26 21:09
去年
此快照最后确认于
2025/11/04 16:00
4 个月前
查看原帖
rt,出考场的时候和同学对答案,然后发现同学们都写的众数做法,包括洛谷上也是,求问我的做法正确性。目前洛谷民间数据 100 pts, code :
CPP
#include <bits/stdc++.h>
#define ll long long
#define endl "\n"

using namespace std;

ll n, a[114514], cnt[114514], tot[114514], ans = 0;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);
    cin>> n;
    for (ll i = 1; i <= n; i++) {
        cin >> a[i]; cnt[a[i]] ++, tot[a[i]] ++;
    }
    sort(a + 1, a + n + 1); ll sz = unique(a + 1, a + n + 1) - a - 1;
    for (ll i = 1; i <= sz; i++) {
        ll pos = i - 1;
        while (cnt[a[i]] >= 0 && pos >= 1) {
            if (cnt[a[i]] >= tot[a[pos]]) {
                cnt[a[i]] -= tot[a[pos]], tot[a[pos]] = cnt[a[pos]] = 0;
            } else {
                tot[a[pos]] -= cnt[a[i]], cnt[a[i]] = 0;
            }
            pos --;
        }
    }
    for (ll i = 1; i <= sz; i++) {
        ans += tot[a[i]];
    }
    cout << ans << endl;
}

回复

6 条回复,欢迎继续交流。

正在加载回复...