bzoj P2456

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bzoj P2456相关的知识,希望对你有一定的参考价值。

这道题难就难在空间限制上,只给了1MB,导致无法用数组来储存

但是,经过探寻规律发现,这道题其实是有很简单的方法的

XX定理:

当一个数列中的众数出现次数大于n/2时,将两个不相同的数同时抹掉,这个结论仍然成立

因此,每次统计次数,当出现不一样的数就抵消,次数等于0是就说明抵消完了,换一个数继续,直到结束,就可以求出答案

#include<bits/stdc++.h>
int n,ans,cnt,x;
int main(){
    scanf("%d%d",&n,&ans);
    cnt=1;
    while(--n){
        scanf("%d",&x);
        if(x==ans) cnt++;
        else cnt--;
        if(!cnt) ans=x,cnt=1; 
    }
    printf("%d",ans);
    return 0;
}

 

以上是关于bzoj P2456的主要内容,如果未能解决你的问题,请参考以下文章

P2456 - 膜拜神犇

Bzoj2339--Hnoi2011卡农

[bzoj1966][Ahoi2005][VIRUS 病毒检测] (字符串dp)

BZOJ4641基因改造 KMP

BZOJ2339HNOI2011卡农

bzoj2434阿狸的自动机