题意:n个基地放在2维平面,然后m个炸弹人,每个炸弹人可以炸一行或者一列,输出每个炸弹人炸掉的基地个数。

思路:用map >对应起来一行或者一列。(用set没过,估计数据里有多个基地位于同一个点上)

#include

#include

#include

#include

using namespace std;

typedef map > line;//两个>间一定要加个空格

map >mx;

map >my;

int bomb(line &x,line &y,int pos){

multiset::iterator it;//学习下

for(it=x[pos].begin();it!=x[pos].end();++it)

y[*it].erase(pos);

int ret=x[pos].size();

x[pos].clear();

return ret;

}

int main(){

int n,m,x,y,c,d,i,ans;

while(~scanf("%d%d",&n,&m)){

if(n==0&&m==0)break;

mx.clear();

my.clear();

for(i=0;i

scanf("%d%d",&x,&y);

mx[x].insert(y);

my[y].insert(x);

}

for(i=0;i

scanf("%d%d",&c,&d);

if(c==0)ans=bomb(mx,my,d);

else ans=bomb(my,mx,d);

printf("%d\n",ans);

}

printf("\n");

}

return 0;

}

View Code

 

相关链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。