思路:操作 2 ,升序--->联想升序的办法(容器,排序)升序的有set,map-->看有没有去重,而这个要求,不能去重,容器里面有重复元素,所以用multiset
操作 3 要知道某个数对应哪些编号,可以用二维数组,但是要求升序,所以用map映射一个multiset。
#include <bits/stdc++.h> #define int long long //(有超时风险) #define PII pair<int,int> #define endl '\n' using namespace std; const int N=2e6+10,M=1e3+10,mod=998244353,INF=0x3f3f3f3f; //只能开全局变量 multiset<int>box[N];//根据题意来,要求不去重,升序; map<int,set<int>>card;//value要求去重,升序; signed main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int n,m;cin>>n>>m; for(int i=1;i<=m;i++) { int t;cin>>t; if(t==1) { int x,y;cin>>x>>y; box[y].insert(x); card[x].insert(y); } if(t==2) { int x;cin>>x; for(auto it:box[x]) { cout<<it<<' '; } cout<<endl; } if(t==3) { int x;cin>>x; for(auto it:card[x]) { cout<<it<<' '; } cout<<endl; } } return 0; }
[ABC298C] Cards Query Problem--map,multiset
最新推荐文章于 2024-05-20 20:08:58 发布