2017/10/6 x中培训-------谁是组长

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017/10/6 x中培训-------谁是组长相关的知识,希望对你有一定的参考价值。

谁是组长 (来自X中的题目)

(File IO): input:leader.in output:leader.out
时间限制: 1000 ms 空间限制: 65536 KB 具体限制
题目描述
x中信息组需要选一个组长。信息组一共有n个人,分别用1到n编号,其中m个人参与了投票。得票数过半
(票数大于m div 2)的人将被选为组长。
输入数据将告知这m个人分别将票投给了谁,请统计出谁将担任一中信息组的组长。

输入

第一行两个数n和m。
第二行有m个数,这些数都是不超过n的正整数,表明这m个人的选择。

输出

输出将被选为组长的人。如果没有人的票数过半,请输出-1。

样例输入

7 4
7 7 2 7

样例输出

7

数据范围限制

20%数据满足: n,m<=10
40%数据满足: n<=10,m<=10000
100%数据满足: 1<=n<=maxlongint,1<=m<=10000

PS:注意空间控制。

 

这题一时只会写暴力,后面又想到伪hash看看测评点水不水,结果数据好水,竟然让我AC了。。。

暴力:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#define N 0xffff
using namespace std;
long int n,y,a[N];
int m;
int main()
{
	//freopen("leader.in","r",stdin);
	//freopen("leader.out","w",stdout);
	int i,j;
	cin>>n>>m;	y=m/2;
	for(i=1;i<=m;i++)
	{ scanf("%d",&j); a[j]++;
	if(a[j]>y) { cout<<j; return 0;} }
	cout<<-1;
	return 0;
}


//50分

伪hash:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#define N 233329
using namespace std;
long int n,y=0,a[N+1]={0};
int m;
int main()
{
    //freopen("leader.in","r",stdin);
    //freopen("leader.out","w",stdout);
     int i,j;
     cin>>n>>m;
     for(i=1;i<=m;i++)
     { scanf("%d",&j);
     a[j%233329]++;
     if(a[j%233329]>m/2)
     y=j;}
 if(y==0)
   cout<<-1;
 else
 cout<<y;
 return 0;
}

//100分

以上是关于2017/10/6 x中培训-------谁是组长的主要内容,如果未能解决你的问题,请参考以下文章

2017.10.6 国庆清北 D6T2 同余方程组

1. 谁是照片picture VS photograph?

社区团购热潮退却,谁是电商卖菜“接盘侠”?

频率计数日期

童年乐趣十分钟就能用Python做谁是卧底和弹球小游戏

根据 Git,谁是“我们”,谁是“他们”?