枪打鸟的问题

来源:互联网 发布:java形参实参 编辑:程序博客网 时间:2024/06/08 15:46
E - Gunner
Time Limit:4000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u
Submit Status Practice HDU 5199

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 $n$ birds and $n$ trees. The $i-th$ bird stands on the top of the $i-th$ tree. The trees stand in straight line from left to the right. Every tree has its height. Jack stands on the left side of the left most tree. When Jack shots a bullet in height H to the right, the bird which stands in the tree with height $H$ 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 $n,m$ in the first line, $n$ indicates there are $n$ trees and $n$ birds, $m$ means Jack will shot $m$ times. 

In the second line, there are $n$ numbers $h[1],h[2],h[3],…,h[n]$ which describes the height of the trees. 

In the third line, there are m numbers $q[1],q[2],q[3],…,q[m]$ which describes the height of the Jack’s shots. 

Please process to the end of file. 

[Technical Specification] 

$1 \leq n,m \leq 1000000(10^{6})$ 

$1 \leq h[i],q[i] \leq 1000000000(10^{9})$ 

All inputs are integers.
 

Output

For each $q[i]$, output an integer in a single line indicates the number of birds Jack shot down.
 

Sample Input

4 31 2 3 41 1 4
 

Sample Output

101

Hint

Huge input, fast IO is recommended.          
 


分别表示的是,第一行那只鸟分别在不同的n只树上,然后猎人站在不同的高度去打鸟,与鸟相同的高度就可以打到鸟,,
如果两次均在同一个高度打鸟则只有第一次可以打到鸟。
以下是代码:


#include <algorithm>#include <iostream>#include <cstring>#include <string>#include <map>#include <cstdio>using namespace std;int main(){int n,m;while(cin>>n>>m){map<int ,int >p;   //建立一个map,pp.clear();int i,j,a,b;for(i=0;i<n;i++){    scanf("%d",&a);  //鸟的位置    p[a]++;       //鸟}for(j=0;j<m;j++){    scanf("%d",&b);    printf("%d\n",p[b]);  //输出打到的鸟的个数    p[b]=0;          //如果这个高度被打到过鸟则此处鸟数为0;} }    return 0;}


0 0