Codeforces Round #558 (Div. 2) B2 - Cat Party (Hard Edition) (思维)

Codeforces Round #558 (Div. 2) B2 - Cat Party (Hard Edition) (思维) 

Codeforces Round #558 (Div. 2) B2 - Cat Party (Hard Edition) (思维) 

 给出 n 个数,找出一个最大的 x,使得前 x 个数中任意删除一个数之后,其余数字的出现个数相同

可以利用两个数组,f 数组表示 a[i] 的出现次数,F 数组表示 a[i] 的出现次数的出现次数

  • 如果 Codeforces Round #558 (Div. 2) B2 - Cat Party (Hard Edition) (思维),说明在添加一个数即可成立
  • 如果 Codeforces Round #558 (Div. 2) B2 - Cat Party (Hard Edition) (思维),说明在 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;
}

 

上一篇:CF1370F2-The Hidden Pair(Hard Version)【交互题,二分】


下一篇:webpack-优化编译速度