Codeforces Round #558 (Div. 2) B2 - Cat Party (Hard Edition) (思维)
作者:互联网
给出 n 个数,找出一个最大的 x,使得前 x 个数中任意删除一个数之后,其余数字的出现个数相同
可以利用两个数组,f 数组表示 a[i] 的出现次数,F 数组表示 a[i] 的出现次数的出现次数
- 如果 ,说明在添加一个数即可成立
- 如果 ,说明在 i 位置成立
const int N=2e5+5;
int n,m;
int i,j,k;
int a[N];
map<int,int> f,F;
int main()
{
while(~sd(n)){
int ans=1;
F.clear(); f.clear();
forn(i,1,n){
sd(a[i]);
f[a[i]]++;
int x=f[a[i]];
F[x]++;
int y=F[x];
if(x*y==i && i!=n) ans=i+1;
if(x*y==i-1) ans=i;
}
pd(ans);
}
//PAUSE;
return 0;
}
标签:558,int,clear,Hard,个数,Codeforces,++,数组,ans 来源: https://blog.csdn.net/C_Dreamy/article/details/114644835