zoukankan      html  css  js  c++  java
  • Bzoj 2456: mode 数论,众数

    2456: mode

    Time Limit: 1 Sec  Memory Limit: 1 MB
    Submit: 2843  Solved: 1202
    [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。



    zju2132 The Most Frequent Number

    Source

    鸣谢 黄祎程

    题解:

    这道题内存给的实在是。。。

    我不会告诉你 #include<bits/stdc++.h> 过不了。。。

    只有用 #include<cstdio> 或 #include<stdio.h> 。。。

    因为题目中说了这个数一定会出现*超过*n div 2 次。

    例如样例:

    3 2 3 1 3

    我们可以把不相等的抵消。

    3 - 2

    3 - 1

    剩下了一个3,即为众数。

    然后从头到尾边输入,边判断是否和当前的数相等,相等就++,不相等就--。

    加了读入优化更好呦~~~

     1 #include<cstdio>
     2 int read()
     3 {
     4     int s=0,fh=1;char ch=getchar();
     5     while(ch<'0'||ch>'9'){if(ch=='-')fh=-1;ch=getchar();}
     6     while(ch>='0'&&ch<='9'){s=s*10+(ch-'0');ch=getchar();}
     7     return s*fh;
     8 }
     9 int main()
    10 {
    11     int s=0,k=0,n;
    12     n=read();
    13     while(n--)
    14     {
    15         int a;
    16         a=read();
    17         if(k==0)s=a;
    18         if(s==a)k++;
    19         else k--;
    20     }
    21     printf("%d",s);
    22     return 0;
    23 }
  • 相关阅读:
    jQuery(2)
    jQuery(1)
    underscore.js
    面向对象复习
    1.14函数复习
    面向对象(3)继承
    10.18
    1017
    js笔记二
    js笔记一
  • 原文地址:https://www.cnblogs.com/Var123/p/5315307.html
Copyright © 2011-2022 走看看