zoukankan      html  css  js  c++  java
  • 【BZOJ】2456: mode

    2456: mode

    Time Limit: 1 Sec  Memory Limit: 1 MB
    Submit: 3154  Solved: 1342
    [Submit][Status][Discuss]

    Description

    给你一个n个数的数列,其中某个数出现了超过n div 2次即众数,请你找出那个数。

    Input

    第1行一个正整数n。
    第2行n个正整数用空格隔开。

    Output

        一行一个正整数表示那个众数。

    Sample Input

    5
    3 2 3 1 3

    Sample Output

    3

    HINT

    100%的数据,n<=500000,数列中每个数<=maxlongint。


    妈的,发现一道神题啊,这个空间表示我们只能开几个变量。但是这里的众数定义为出现次数大于n div 2.所以呵呵呵


     1 /**************************************************************
     2     Problem: 2456
     3     User: xrdog
     4     Language: C++
     5     Result: Accepted
     6     Time:192 ms
     7     Memory:820 kb
     8 ****************************************************************/
     9  
    10 #include<cstdio>
    11 using namespace std;
    12 int i,x,tot,m,n;
    13 inline int get()
    14 {
    15     int x=0,f=1;char ch=getchar();
    16     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    17     while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    18     return x*f;
    19 }
    20  
    21 int main()
    22 {
    23     //freopen("a.in","r",stdin); freopen("a.out","w",stdout);
    24     n=get();
    25     x=-1;
    26     for (i=1;i<=n;i++)
    27         {
    28             m=get();
    29             if (m!=x) tot--; else tot++;
    30             if (tot<1) {x=m; tot++;}
    31         }
    32     printf("%d",x);
    33     return 0;
    34 }
    本文作者:xrdog 作者博客:http://www.cnblogs.com/Dragon-Light/ 转载请注明出处,侵权必究,保留最终解释权!
  • 相关阅读:
    poj 2104(线段树)
    poj 1962(并查集+带权更新)
    hdu 2818(并查集,带权更新)
    hdu 1856
    hdu 3172
    hdu 1325(并查集)
    hdu 5023
    pku 2777(经典线段树染色问题)
    hdu 1671(字典树判断前缀)
    hdu 1247 (字典树入门)
  • 原文地址:https://www.cnblogs.com/Dragon-Light/p/5673949.html
Copyright © 2011-2022 走看看