bzoj2456: mode
来源:互联网 发布:象屿集团怎么样知乎 编辑:程序博客网 时间:2024/05/30 23:06
2456: mode
Time Limit: 1 Sec Memory Limit: 1 MBSubmit: 2488 Solved: 1066
[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。
zju2132 The Most Frequent Number
Source
dood problem,挺不错的题,说的是众数出现次数超过了一半,题目限制内存是1M,所以开数组必定会超内存,那么问题来了,只需要标记一下,附代码:
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int flag,help,cnt,num,n;int main(){//原理是,假设输入有n个数,那么众数出现的次数最少为n/2+1,把所有的数都输入一次 while(scanf("%d",&n)!=EOF)//出现众数就+1,不是众数就减去1; {//最后得到的一定是众数 flag=help=cnt=1;//cnt为当前众数出现的次数,flag为当前的众数 while(n--){scanf("%d",&num);if(num==flag)//如果输入的数为当前的众数 cnt++;//当前众数的个数+1 else{cnt--;//如果输入的不是当前的众数,那么当前众数的个数减去1 if(cnt<=0)//如果当前中数的个数减到了0 {flag=num;//那么当前众数要更新,更新为当前输入的数 cnt=1;//并且标记当前众数出现的次数为1 }}}printf("%d\n",flag);}}
0 0
- bzoj2456 mode
- [BZOJ2456]mode
- BZOJ2456: mode
- bzoj2456: mode
- bzoj2456:mode
- 【bzoj2456】 mode
- Bzoj2456 mode
- [bzoj2456] mode
- bzoj2456: mode
- BZoj2456: mode
- BZOJ2456: mode
- bzoj2456: mode
- bzoj2456: mode
- [bzoj2456]mode
- bzoj2456 mode
- bzoj2456: mode
- BZOJ2456 mode 抵消思想
- 【BZOJ2456】mode,卡内存
- (转)十进制与二进制互相转换
- 高性能MySQL(二):寻找瓶颈
- 很特别的一个动态规划入门教程
- 中国第一批操盘手下场
- 将博客搬至CSDN
- bzoj2456: mode
- 自定义复选框,复选框样式修改,重写复选框
- eclipse+webservice开发实例
- fileters文件不起作用 原因
- UITableView
- JavaScript将数字转换为大写金额
- Laravel 使用遇到的问题及解决方法
- BF算法
- jqueryeasyui三级联动