看了一圈发现就自己s t1的做法最抽象
  • 板块灌水区
  • 楼主Starise
  • 当前回复8
  • 已保存回复10
  • 发布时间2024/10/26 20:49
  • 上次更新2024/10/26 21:26:51
查看原帖
看了一圈发现就自己s t1的做法最抽象
710250
Starise楼主2024/10/26 20:49

rt,当看到ai<1e5的时候就觉得应该这么做,出考场一看取众数人都傻了

#include<bits/stdc++.h>
using namespace std;
const int N=100005;
int n,cnt;
long long ans;
int a[N],has[N],l[N],ack[N];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		has[a[i]]++;
	}
	for(int i=1;i<=N;i++)
		if(has[i]!=0) l[++cnt]=has[i];
	for(int i=1;i<=cnt;i++)
		ack[i]=l[i];
	for(int i=1;i<=cnt;i++){
		for(int j=i+1;j<=cnt;j++){
			if(ack[j]>=l[i]){
				ack[j]-=l[i];
				l[i]=0;
				break;
			}
			else{
				l[i]-=ack[j];
				ack[j]=0;
			}
		}
	}
	for(int i=1;i<=cnt;i++)
		ans+=l[i];
	cout<<ans<<endl;
	return 0;
}

顺便问下这个做法会不会被卡,目前民间和大样例都过了

2024/10/26 20:49
加载中...