题目
- 原题地址:星球大战
- 题目编号:NC235267
- 题目类型:map、list
- 时间限制:C/C++ 2秒,其他语言4秒
- 空间限制:C/C++ 262144K,其他语言524288K
1.题目大意
- 二维平面上
n
个坐标对应着敌人,m
次操作,每次操作消除指定的一行或一列的敌人,问每次操作消灭的敌人的个数
2.题目分析
- 使用
map
存储每个出现的x
坐标对应的所有y
坐标,以及每个出现的y
坐标对应的所有x
坐标 - 消灭的敌个数就是
list
的大小,例如消灭x=d
直线上的所有敌人,消灭的敌人数就是x
对应的存储y
坐标的list
的大小 - 随后遍历该
x
对应的所有y
的list
,从中移除该x
,最后再将该x
的list
清空
3.题目代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
map<int, list<int>> xx, yy;
int x, y;
for(int i=0;i<n;i++) {
cin >> x >> y;
xx[x].push_back(y);
yy[y].push_back(x);
}
int c, d;
while(m--) {
cin >> c >> d;
if(!c) {
cout << xx[d].size() << endl;
for(auto k: xx[d]) yy[k].remove(d);
xx[d].clear();
} else {
cout << yy[d].size() << endl;
for(auto k: yy[d]) xx[k].remove(d);
yy[d].clear();
}
}
}
标签:map,NC235267,int,星球大战,list,坐标,题目
From: https://www.cnblogs.com/zhangyi101/p/16638911.html