hdu 4022 STL

题意:给你n个敌人的坐标,再给你m个炸弹和爆炸方向,每个炸弹可以炸横排或竖排的敌人,问你每个炸弹能炸死多少个人。

 /*
HDU 4022
G++ 1296ms */ #include<stdio.h>
#include<iostream>
#include<set>
#include<map>
#include<algorithm>
using namespace std; // 建立一个 map,从 int 到 一个 multiset 容器的映射
typedef map<int,multiset<int> > line;// 两个>间一定要加个空格
map<int,multiset<int> >mx;//定义x坐标对应的map
map<int,multiset<int> >my;//定义y坐标对应的map int bomb(line &x,line &y,int pos)
{
int ret=x[pos].size();
multiset<int>::iterator it;//这个学习下
for(it=x[pos].begin();it!=x[pos].end();it++)
y[*it].erase(pos);//multiset 去除一个元素
x[pos].clear();//清空multiset
return ret;
}
int main()
{
int n,m;
int c,d;
int tx,ty;
while(scanf("%d%d",&n,&m)!=EOF)
{
if(n==&&m==)break;
mx.clear();
my.clear();
for(int i=;i<n;i++)
{
scanf("%d%d",&tx,&ty);
mx[tx].insert(ty);
my[ty].insert(tx);
}
for(int i=;i<m;i++)
{
scanf("%d%d",&c,&d);
int ans;
if(c==) ans=bomb(mx,my,d);
else ans=bomb(my,mx,d);
printf("%d\n",ans);
}
printf("\n");
}
return ;
}
上一篇:angular学习笔记(十)-src和href处理


下一篇:MongoDB基础知识(二)