hdu 1029 B
来源:互联网 发布:大数据提供价格 编辑:程序博客网 时间:2024/05/16 18:18
题目链接
大体题意就是让你输出奇数个数的数列中出现次数大于 n/2的那个
我记得类似的题目啊哈的最后出现过,我们肯定首先想到的就是排序然后输出中间那个,但是这样的复杂度是快排为nlogn,那么我们有没有线性的方法呢?
有一个比较好的方法就是 我们可以利用该数出现n/2 的性质,那么我们每次删除数组中的两个数,一直删到最后留下的就一定是那个出现次数超过n/2的那个
#include<bits/stdc++.h>#define Ri(a) scanf("%d", &a)#define Rl(a) scanf("%lld", &a)#define Rf(a) scanf("%lf", &a)#define Rs(a) scanf("%s", a)#define Pi(a) printf("%d\n", (a))#define Pf(a) printf("%lf\n", (a))#define Pl(a) printf("%lld\n", (a))#define Ps(a) printf("%s\n", (a))#define W(a) while(a--)#define CLR(a, b) memset(a, (b), sizeof(a))#define MOD 100000007using namespace std;typedef long long ll;const int maxn=1e7+10;int n,x;int main(){while(~Ri(n)){Ri(x);int cnt=1,item=x;for(int i=1;i<n;i++){Ri(x);if(cnt==0){item=x;cnt=1;}if(x==item)cnt++;elsecnt--;}Pi(item);}return 0;}
1 0
- hdu 1029 B
- HDU 3652 B-number
- HDU 2033 A+B
- HDU 2034 A-B
- hdu 1412 {A} + {B}
- HDU 1096 A+B
- HDU A^B
- HDU 1412 {A}+{B}
- hdu 1228A+B
- HDU 1412 ( {A} + {B} )
- HDU 1228 ( A + B )
- hdu 1288 A + B
- hdu 1228 A + B
- HDU 1229 A + B
- HDU 1412 {A}+{B}
- hdu A/B
- hdu A/B
- hdu 1228 A + B
- 设计模式--单例模式python实现
- Leetcode 97. Interleaving String
- 懒虫小鑫
- Mysql学习笔记四——group分组与统计函数
- CF
- hdu 1029 B
- JSP笔记<一>
- 【mfc】常用的代码【更新】
- SD卡刷机笔记
- android存储各种格式文件到sd卡
- 浅谈JavaScript对象的浅拷贝和深拷贝
- 滴滴17春招大题
- 自定义数据格式的矢量地图实现
- Combination Sum