本题地址:http://www.luogu.org/problem/show?pid=1407
题目描述
有一家世界级大企业,他们经过调查,发现了一个奇特的现象,竟然在自己的公司里,有超过一半的雇员,他们的工资完全相同!
公布了这项调查结果后,众多老板对于这一现象很感兴趣,他们发现在自己的公司也存在有这样的现象——超过一半的雇员工资都是x。老板们都很想知道这个x是多少,请你帮忙计算一下。
输入输出格式
输入格式:
输入:(gold.in)
第一行输入一个t,表示有t家公司找你帮忙判断。
之后t行,第i行的第一个数字为Ai表示第i个公司的雇员数,之后Ai个数字表示雇员的工资。
输出格式:
输出:(gold.out)
共输出t行,第i行表示第i个公司的x。(如题意表述)
输入输出样例
输入样例#1:
2
5 0 2 0 2 2
4 2 3 3 3
输出样例#1:
2
3
说明
数据范围:
t<=10,且员工的资产是10^9以内的非负整数。
70%数据满足Ai<=1000
100% 数据满足Ai<=1000000内存限制 1MB
【思路】
因为有内存限制所以用map会爆内存。
这个题目的突破口在于求的是出现次数超过一半的数字x(而非飞翔同学说的求众数),所以x一定会有连续,我们只需要求出连续长度最长的数字即可。
【代码】
1 #include<iostream> 2 #include<map> 3 using namespace std; 4 5 int n; 6 7 int main() { 8 ios::sync_with_stdio(false); 9 int T; cin>>T; 10 while(T--) { 11 int x,a=0,A; 12 cin>>A; 13 bool f=false; 14 for(int i=0;i<A;i++) { 15 int u; cin>>u; 16 if(a==0) x=u; 17 if(x==u) a++; else a--; 18 } 19 cout<<x<<"\n"; 20 } 21 return 0; 22 }
时间: 2024-10-22 03:59:49