山东济南彤昌机械科技有限公司 山东济南江鹏工贸游有限公司

洛谷P1407 工资

洛谷P1407 工资

 

本题地址: 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 }

 

posted on 2015-10-16 08:59  hahalidaxin  阅读(148)  评论(0编辑  收藏  举报