简答哈希实现 (nyoj 138 找球号2)

例题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=138

代码目的:复习哈希用

代码实现:

 1 #include "stdio.h"  //nyoj 138 简单哈希
 2 #include "vector"
 3 using namespace std;
 4 #define N 100007
 5 vector<int> a[N];  //vector向量处理冲突
 6 
 7 void ADD()
 8 {
 9     int m,k;
10     scanf("%d",&m);
11     while(m--)
12     {
13         scanf("%d",&k);
14         a[k%N].push_back(k);
15     }
16 }
17 
18 void Query()
19 {
20     bool flag;
21     int i,m,k,x;
22     scanf("%d",&m);
23     while(m--)
24     {
25         scanf("%d",&k);
26         flag = false;
27         x = k%N;
28         for(i=0; i<(int)a[x].size(); i++)
29             if(a[x][i]==k)
30                 flag = true;
31         if(flag)
32             printf("YES\n");
33         else
34             printf("NO\n");
35     }
36 }
37 
38 int main()
39 {
40     int n;
41     char str[10];
42     scanf("%d",&n);
43     while(n--)
44     {
45         scanf("%s",str);
46         if(str[0]=='A')
47             ADD();
48         else
49             Query();
50     }
51     return 0;
52 }

 

posted @ 2015-08-21 17:11  ruo_yu  阅读(255)  评论(0)    收藏  举报