[BZOJ2456]mode(数据处理+卡内存)

题目描述

传送门

题解

卡内存,谁知道连iostream和ctring都不能开= =,涨姿势= =
注意这里众数的概念:大于 n div 2 那么每次把不同的两个数相抵消,最后剩下的那个一定是“众数”。

代码

#include<cstdio>
using namespace std;
int n,num,ans,x;
int main(){

    scanf("%d",&n);
    for (int i=1;i<=n;++i){
        scanf("%d",&x);
        if (!num){
            ans=x;
            num=1;
            continue;
        }
        if (x==ans)
          num++;
        else
          num--;
    }
    printf("%d\n",ans);
}

总结

这种题有一些奇怪的卡点挂了就挂了,就当是涨姿势= =
然而思路能不能自己想出来呢?

你可能感兴趣的:(数据处理,bzoj)