码迷,mamicode.com
首页 > 其他好文 > 详细

【bzoj2456】 mode

时间:2016-09-28 16:20:02      阅读:324      评论:0      收藏:0      [点我收藏+]

标签:

http://www.lydsy.com/JudgeOnline/problem.php?id=2456 (题目链接)

只看了一眼,直觉便告诉我这是水题。于是跟某码农打赌说10分钟做出来叫爸爸,结果输了。。。

题意:给你一个n个数的数列,其中某个数出现了超过n div 2次即众数,请你找出那个数。空间限制1mb。

solution 
  此题乃鬼题一道,鉴定完毕。 
  题目要求求众数,而众数x在整个数列中出现了超过n div 2次,那么我们可以发现,整个数列中众数x的个数一定超过n div 2次,也就是说众数的个数减去不是众数的数的个数>0。 
  做法有点鬼,不过很好理解,只有3个变量。。(恐惧吧)

温馨提示:为了保证各位小伙伴一次ak,请只开cstdio库,能不开变量就不开变量,因为这些都是要空间的。。。

代码:

// bzoj2456
#include<cstdio>
#define LL long long
#define inf 2147483640
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std;



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

  

【bzoj2456】 mode

标签:

原文地址:http://www.cnblogs.com/MashiroSky/p/5916163.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!