BZOJ 2456 mode(找众数)
来源:互联网 发布:小黑屋码字软件下载 编辑:程序博客网 时间:2024/06/04 20:11
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
Time Limit: 1 Sec
Memory Limit: 1 MB
Solution
一道有趣的题,重点在于空间限制只有1M。
然后不能将所有的数保存,也不能数组计数。
只能读一遍出结果。
我们发现众数出现次数大于其他数出现的总和。假如众数是a,拿a与其他非a数抵消的话,肯定剩下的是a。
于是我们开四个int,n,a,val,cnt。
val代表当前的众数的值,cnt则记录众数出现的次数,若a与val相同则cnt++,否则cnt–。当cnt为0时代表该换众数的值了,cnt清掉为1,这样最后的val就是众数,搞定了。
注意头文件不要带太多,否则MLE。
CODE
#include <cstdio>int n, cnt, val, a;int main(){ scanf("%d", &n); scanf("%d", &val); cnt = 1; for(; n > 1; n --){ scanf("%d", &a); if(a == val) cnt ++; else{ cnt --; if(cnt == 0) val = a, cnt = 1; } } printf("%d", val); return 0;}
葬送。
阅读全文
0 0
- bzoj 2456: mode(找众数)
- BZOJ 2456 mode(找众数)
- 【bzoj 2456】 mode 众数
- BZOJ 2456 mode (求众数)
- bzoj 2456: mode 【思维 求众数】
- BZOJ 2456: mode(巧取众数)
- [BZOJ 2456] mode 常数时间求众数/队列压缩
- 众数(Mode)
- bzoj 2456 mode 题解
- BZOJ 2456: mode
- bzoj 2456: mode
- bzoj 2456 mode
- bzoj--2456--mode(规律)
- BZOJ 2456: mode【思维】
- BZOJ 2456: mode【妙脆角】
- BZOJ 2456, Mode
- 【BZOJ】2456 mode 模拟
- bzoj 2456 mode
- chrome抓包方法
- SEM_UNDO
- 安装VSCODE运行C++
- 游戏心得
- LeetCode刷题(C++)——Same Tree(Easy)
- BZOJ 2456 mode(找众数)
- spring中定时器的使用
- Oracle 12C 新特性之 恢复表
- 被误解的MVC和被神化的MVVM
- 省时的浏览器同步测试工具 browersync
- 符号匹配
- 安卓的styles.xml文件和theme的使用
- 进程保活之双进程守护
- linux进程通信之信号量、共享内存