博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 2456: mode(新生必做的水题)
阅读量:6629 次
发布时间:2019-06-25

本文共 971 字,大约阅读时间需要 3 分钟。

2456: mode

Time Limit: 1 Sec  Memory Limit: 1 MB Submit: 4868  Solved: 2039 [][][]

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

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2456

分析:此题极其诡异,先看内存,1MB,这一点估计就会卡到死吧,然后就是显然不能开数组做,说水题其实也不是很水,怎么做,下面给出一种非常神奇的做法!

题目里定义的众数出现次数超过数组的一半 其他所有数加起来都没它多!

那就我定义一个cnt=1(至少要一个数)和res=0(初始化) 如果下一个数不等于res就抵消掉让cnt-1;当cnt为0时把res赋成下一个数 最后结果就是res,因为剩下没有数能够抵消它!

下面给出C语言AC代码:(尽量别去跑C++,耗时耗内存)

1 #include 
2 int main() 3 { 4 int n; 5 scanf("%d",&n); 6 int res=0,cnt=1,c; 7 for(int i=1;i<=n;i++) 8 { 9 scanf("%d",&c);10 if(c==res)11 cnt++;12 else cnt--;13 if(cnt<=0)14 {15 res=c;16 cnt=1;17 }18 }19 printf("%d",res);20 return 0;21 }

 

转载地址:http://uswvo.baihongyu.com/

你可能感兴趣的文章
typescirpt - .d.ts声明文件的用法
查看>>
Eikonal方程
查看>>
nginx+redis安装配置(内存型数据库)实现session的共享
查看>>
Ubuntu Bochs boot.asm 测试
查看>>
有了screen,妈妈再也不用担心我的学习啦
查看>>
牛客小白赛4 A 三角形 数学
查看>>
对 PInvoke 函数的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标...
查看>>
《C陷阱与缺陷》阅读笔记(个人版)
查看>>
返回一个整数数组中最大子数组的和。(续2)---二维数组
查看>>
LinkeList 特有方法
查看>>
File
查看>>
C#反编译笔记
查看>>
近期开发程序,要点归纳
查看>>
k-means聚类
查看>>
js将图片按比例缩放显示IE6
查看>>
py脚本打包exe可执行文件
查看>>
Educational Codeforces Round 64 -B(贪心)
查看>>
几个星期不更新,(~ ̄▽ ̄)~ BeautifulSoup and pyquery
查看>>
Linq去重 不用实现IEqualityComparer接口的方法超级简单
查看>>
Spring.net 在aps.net Web的配置复习
查看>>