s组T1求组,感觉没问题但挂了15分
  • 板块学术版
  • 楼主guoshi
  • 当前回复8
  • 已保存回复8
  • 发布时间2024/11/4 19:49
  • 上次更新2024/11/4 20:46:30
查看原帖
s组T1求组,感觉没问题但挂了15分
945842
guoshi楼主2024/11/4 19:49
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,a[N],ans;
int tot,b[N],sum[N],can[N],living[N];
int main(){
//	freopen("duel.in","r",stdin);
//	freopen("duel.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	sort(a+1,a+1+n);
	a[0]=-2486372;
	for(int i=1;i<=n;i++)
		if(a[i]!=a[i-1]){
			b[++tot]=a[i];
			sum[tot]++;
		}
		else
			sum[tot]++;
//	for(int i=1;i<=tot;i++)
//		cout<<b[i]<<" "<<sum[i]<<"\n";
	for(int i=1;i<=tot;i++)
		living[i]=sum[i],can[i]=sum[i];
	for(int i=1;i<tot;i++){
		for(int j=i+1;j<=tot;j++){
			if(living[i]<=can[j]){
				living[i]=0;
				can[j]-=living[i];
				break;
			}
			else{
				living[i]-=can[j];
				can[j]=0;
			}
		}
	}
	for(int i=1;i<=tot;i++)
		ans+=living[i];
	cout<<ans;
	return 0;
}
2024/11/4 19:49
加载中...