首页 > 代码库 > [bzoj 2456]mode
[bzoj 2456]mode
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2456
mode
Time Limit: 1 Sec Memory Limit: 1 MBSubmit: 4872 Solved: 2040
[Submit][Status][Discuss]
Description
给你一个n个数的数列,其中某个数出现了超过n div 2次即众数,请你找出那个数。
Input
第1行一个正整数n。
第2行n个正整数用空格隔开。
Output
一行一个正整数表示那个众数。
Sample Input
5
3 2 3 1 3
3 2 3 1 3
Sample Output
3
HINT
100%的数据,n<=500000,数列中每个数<=maxlongint。
注意空间,反观定义的话我们可以考虑我们要找的众数。
如果把它与其他数打架的话,最后保留的一定是众数,两个相打,同时死亡。
这可能是最哲学的题解了。
1 #include<stdio.h> 2 int main() 3 { 4 int i=1,a=0,b=0,c=0,d=0; 5 scanf("%d%d",&a,&b);d=1; 6 for(i=1;i<a;i++) 7 { 8 scanf("%d",&c); 9 if(b==c)d++;10 else11 {12 d--;13 if(d==0){14 b=c,d=1;15 }16 }17 }18 printf("%d",b);19 return 0;20 }21
对了,最好交C的文件,而且别忘改回C++,别问我怎么知道的
[bzoj 2456]mode
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。