zoukankan      html  css  js  c++  java
  • 【bzoj2456】 mode

    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;
    }
    

      

  • 相关阅读:
    哈利波特全文字母以及单词的统计
    简单java web制作思路
    构建之法阅读笔记1
    第五章:表达式
    const用法详解
    第六章:语句
    杭电acm1465(错排公式)
    杭电acm2113
    杭电acm2148
    杭电acm1720
  • 原文地址:https://www.cnblogs.com/MashiroSky/p/5916163.html
Copyright © 2011-2022 走看看