【BZOJ 2456】 mode

【题目链接】

           点击打开链接

【算法】

           此题初看是大水题,只需调用std :: sort即可

           但是,n最大500000,显然会超时

           而且,内存限制1MB,我们连数组也开不了!

           那怎么做呢 ?

           我们发现,一个非众数和众数可以抵消,因此,暴力扫描一遍即可

【代码】

           

#include<cstdio>
using namespace std;

int i,num,n,x,s;

int main() {
        
        scanf("%d",&n);
        for (i = 1; i <= n; i++) {
                scanf("%d",&x);
                if (num == x) s++;
                else s--;
                if (s <= 0) { s = 1; num = x; }        
        }
        printf("%d\n",num);
        
        return 0;
    
}

 

posted @ 2018-04-30 15:49  evenbao  阅读(87)  评论(0编辑  收藏  举报