Codeforces Round #FF (Div. 2) A. DZY Loves Hash
Posted lxjshuju
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #FF (Div. 2) A. DZY Loves Hash相关的知识,希望对你有一定的参考价值。
DZY has a hash table with p buckets, numbered from 0 to p?-?1. He wants to insert n numbers, in the order they are given, into the hash table. For the i-th number xi, DZY will put it into the bucket numbered h(xi), where h(x) is the hash function. In this problem we will assume, that h(x)?=?x mod p. Operation a mod b denotes taking a remainder after division a by b.
However, each bucket can contain no more than one element. If DZY wants to insert an number into a bucket which is already filled, we say a "conflict" happens. Suppose the first conflict happens right after the i-th insertion, you should output i. If no conflict happens, just output -1.
The first line contains two integers, p and n (2?≤?p,?n?≤?300). Then n lines follow. The i-th of them contains an integer xi (0?≤?xi?≤?109).
Output a single integer — the answer to the problem.
10 5 0 21 53 41 53
4
5 5 0 1 2 3 4
-1
注意数据范围p,m<=200。尽管输入的数据较大,刚開始自己mod1000000001,发现这不能有冲突了,而且还要标记下第一个发生冲突,以后的冲突能够忽略
#include<iostream> #include<cstring> #include<cstdio> #include<string> #include<cmath> #include<algorithm> #define LL int #define inf 0x3f3f3f3f using namespace std; int ha[10002]; int bj; int main() { LL n,m,i,j,k,l; while(~scanf("%d%d",&n,&m)) { bj=0; memset(ha,0,sizeof(ha) ); for(i=1;i<=m;i++) { scanf("%d",&k); k=k%n;//对当前的输入值的个数进行% if(!ha[k]) { ha[k]++; } else if(ha[k]!=0&&!bj )//仅仅取。符合条件的第一个<span id="transmark"></span> { bj=i; } } if(!bj) printf("-1\n"); else printf("%d\n",bj); } return 0; }
以上是关于Codeforces Round #FF (Div. 2) A. DZY Loves Hash的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #FF (Div. 2) D. DZY Loves Modification 贪心+优先队列
Codeforces Round #705 (Div. 2)
Codeforces Round #774 (Div. 2)