首页 > 代码库 > HDU Bombing (STL multiset+map)
HDU Bombing (STL multiset+map)
题意:给你 n 个坐标(x,y),m 个询问(c,d)
c==0,求出x==d有多少个,并删除这些点;
c==1,求出y==d有多少个,并删除这些点。
map+multiset的多重映射
#include<cstdio> #include<stdlib.h> #include<string.h> #include<string> #include<map> #include<cmath> #include<iostream> #include <queue> #include <stack> #include<algorithm> #include<set> using namespace std; #define inf 1e8 #define eps 1e-8 #define ll __int64 #define maxn 100001 #define mol 100007 map<int,multiset<int> > X,Y; int main() { int n,m; while(scanf("%d%d",&n,&m)&&n&&m) { int x,y,c,d; X.clear(); Y.clear(); //multiset<int>::iterator it; while(n--) { scanf("%d%d",&x,&y); X[x].insert(y); Y[y].insert(x); } while(m--) { scanf("%d%d",&c,&d); if(c==0) { multiset<int>::iterator it; printf("%d\n",X[d].size()); for(it=X[d].begin();it!=X[d].end();it++)//删除x==d的y个数 Y[*it].erase(d); X[d].clear(); } else { multiset<int>::iterator it; printf("%d\n",Y[d].size()); for(it=Y[d].begin();it!=Y[d].end();it++)//删除y==d的x个数 X[*it].erase(d); Y[d].clear(); } } printf("\n"); } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。