社区讨论

求问做法正确性,感觉会被CCF卡掉

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

讨论操作

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

当前回复
11 条
当前快照
1 份
快照标识符
@m2r8p7gc
此快照首次捕获于
2024/10/27 14:59
去年
此快照最后确认于
2025/11/04 23:42
4 个月前
查看原帖
考场最后交的这么做的,洛谷A了但是快超时了。 记录:recond 很奇怪,最后想到 O(nlogn)O(nlogn) 做法但没打完\kk。
民间数据不强???
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define endl '\n'
const int N = 1e5 + 5;

int a[N],n;
bool pd[N];
int in(){
    char a = getchar();
    int k = 0, kk = 1;
    while(a>'9'||a<'0'){
        if(a=='-') kk=-1;
        a = getchar();
    }
    while(a>='0'&&a<='9'){
        k = k*10 + a - '0';
        a = getchar();
    }
    return k*kk;
}

signed main(){
//	freopen("duel3.in","r",stdin);
//	freopen("out.txt","w",stdout);
    n = in();
    rep(i,1,n) a[i] = in(); 
    sort(a+1,a+1+n);
    int can = 0;
    rep(i,1,n-1){
        int l = i+1, r = n+1;
        while(l<r){
            int mid = l+r>>1;
            if(a[mid]>a[i]) r = mid;
            else l = mid + 1; 
        }
        while(pd[l]&&l<=n) l++;
        if(l<=n){
        	pd[l] = 1;
        	can++;
		}
    }
    cout << n - can << endl;
    return 0;
}
/*
5
1 2 3 1 2*/

回复

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

正在加载回复...