哈希。题意:有n个鸟分别在n棵树的顶端,第i棵树的高度为Hi,有个猎人准备开m枪打鸟,开枪的高度为Qi,可以把在Qi高度的所有鸟击落,现在请你输出每开一枪能够击落的鸟的个数。
解题思路:刚开始还以为是线段树,一看数据范围就萌萌哒了。看题解说是哈希可搞,于是就学了一下STL里面的map哈希,果然名不虚传。
解题代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include <limits.h>
#include <queue>
#include <algorithm>
#include <vector>
#include <map>
using namespace std;
map<int, int> birds;
int n, m;
int main()
{
int x;
while (~scanf("%d %d", &n, &m))
{
birds.clear();
for (int i=0; i<n; ++i)
{
scanf("%d", &x);
birds[x]++;
}
for (int i=0; i<m; ++i)
{
scanf("%d", &x);
printf("%d\n", birds[x]);
birds.erase(x);
}
}
return 0;
}