BC.36.Gunner(hash) Gunner
Accepts: 391
Submissions: 1397
Time Limit: 8000/4000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
Problem Description
Long long ago, there is a gunner whose name is Jack. He likes to go hunting very much. One day he go to the grove. There are will falls. Jack will shot many times, he wants to know how many birds fall during each shot.
a bullet can hit many birds, as long as they stand on the top of the tree with height of H.
Input
There are multiple test cases (about 5), every case gives times.
In the second line, there are which describes the height of the trees.
In the third line, there are m numbers which describes the height of the Jack’s shots.
Please process to the end of file.
[Technical Specification]
)
)
All inputs are integers.
Output
For each ], output an integer in a single line indicates the number of birds Jack shot down.
Sample Input
4 3 1 2 3 4 1 1 4
Sample Output
1 0 1
Hint
Huge input, fast IO is recommended.1 #include<stdio.h> 2 #include<string.h> 3 typedef long long ll ; 4 const int M = 1000000 + 3 ; 5 struct edge 6 { 7 int nxt ; 8 ll num ; 9 }e[M]; 10 bool vis [M] ; 11 int H[M] , E ; 12 int cnt ; 13 int n , m ; 14 ll h ; 15 16 void init () 17 { 18 E = 0 ; 19 memset (H , 0 , sizeof(H)) ; 20 memset (vis , 0 , sizeof(vis)) ; 21 } 22 23 void Insert (ll x) 24 { 25 int y = x % M ; 26 if (y < 0) y += M ; 27 e[++ E].nxt = H[y] ; 28 e[E].num = x ; 29 H[y] = E ; 30 } 31 32 bool Find (ll x) 33 { 34 int y = x % M ; 35 if (y < 0) y += M ; 36 for (int i = H[y] ; i ; i = e[i].nxt) { 37 if (e[i].num == x && vis[i]) { 38 return false ; 39 } 40 else if (e[i].num == x && !vis[i]) { 41 cnt ++ ; 42 vis[i] = true ; 43 } 44 } 45 } 46 47 inline ll read () { 48 ll ans = 0; char c; bool flag = false; 49 while ((c = getchar()) == ' ' || c == ' ' || c == ' '); 50 if (c == '-') flag = true; else ans = c - '0'; 51 while ((c = getchar()) >= '0' && c <= '9') ans = ans * 10 + c - '0'; 52 return ans * (flag ? -1 : 1); 53 } 54 55 int main () 56 { 57 // freopen ("a.txt" , "r" , stdin ) ; 58 while (~ scanf ("%d%d" , &n , &m) ) { 59 init () ; 60 while (n--) { 61 h = read () ; 62 Insert (h) ; 63 } 64 while (m--) { 65 cnt = 0 ; 66 h = read () ; 67 Find (h) ; 68 printf ("%d " , cnt) ; 69 } 70 } 71 return 0 ; 72 }
相关推荐
- redis list/hash/set
- redis对hash进行的相关操作
- hash小结 hash double hash hash字符串中的子串 树hash
- Go 数据库 Golang之redis 1、windows安装redis 2、linxu安装redis 3、连接redis 4、set,get,设置键值,取得键值 5、hash表设置键值,取键值 6、批量set键值 7、设置过期时间 8.list队列操作 9、redis连接池pool Golang之Mysql操作 Golang之Mysql事务 Golang之http编程 服务端http http客户端 http_head http_head自定义超时写法 http_form写法 http_template,模板写法
- 面向对象进阶--几种双下方法 isinstance和issubclass 反射 __str__和__repr__ item系列 __del__ __new__ __call__ with和__enter__,__exit__ __len__ __hash__ __eq__
- AcWing:139. 回文子串的最大长度(字符串Hash + 前缀和 + 后缀和 + 二分)
- AcWing:138. 兔子与兔子(字符串Hash)
- POJ 1200 Crazy Search【Hash入门】
- 从头到尾彻底解析Hash表算法
- hash表的建立和查找
- 山东省第四届acm.Rescue The Princess(数学推导)
- hdu.5195.DZY Loves Topological Sorting(topo排序 && 贪心) DZY Loves Topological Sorting