【BAOJ2456】【mode】【坑题】
2015-08-15 15:14
309 查看
Description
给你一个n个数的数列,其中某个数出现了超过n div 2次即众数,请你找出那个数。Input
第1行一个正整数n。第2行n个正整数用空格隔开。
Output
一行一个正整数表示那个众数。Sample Input
53 2 3 1 3
Sample Output
3HINT
100%的数据,n<=500000,数列中每个数<=maxlongint。题解:因为空间只有1M所以随机化,离散化什么的直接不用考虑。因为这个数出现超过n/2次,所以如果这个数和其他数两两相消的话最后剩下的一定是这个数。所以我们扫一遍,让不一样的数相撞消失就好了。
#include<cstdio> using namespace std; int now,temp,a,n; int main() { scanf("%d",&n); while (n--) { scanf("%d",&a); if (now==a) temp++; else temp--; if (temp<=0) {temp=1;now=a;} } printf("%d",now); }
相关文章推荐
- 图论500题
- 正则表达式
- Grunt使用记录
- HDU Train Problem II (卡特兰数+大数)
- mvn(即maven)、ant、svn、cvs、git
- Queue (周赛3)
- manacher算法
- 当js中出现 a() is not a function
- 应用中的算法使用
- dos2unix dos文本转换为linux文本 /bin/bas^M:bad interpreter
- 8.String to Integer (atoi)
- 分布式与集群的联系与区别
- 修改linux系统默认启动级别
- hdu 1588
- oracle创建user具体指示
- 一套完整系统对人生的意义
- 黑马程序员----包(package)
- spring常用的一些注解以及注解注入总结
- codeforces 569 E. New Language (2-sat)
- VMware Workstation11.0安装Mac OS X 10.10最完整指南(包含所需所有资源下载)