Super_Cube
2024-11-18 17:29:32
很好笑的题。
所有操作只与单个数字相关,那对于每个
现在对于每个值有一个操作序列,内容为在
你当然可以离线下来通过离散化和树状数组或者在线动态开点线段树做,但是为了偷懒可利用 std::map
与 __gnu_pbds::tree
在不到 500B 代码成功解决。
时间复杂度:
#include<bits/stdc++.h>
#include<bits/extc++.h>
using namespace __gnu_pbds;
std::map<int,tree<int,null_type,std::less<int>,rb_tree_tag,tree_order_statistics_node_update> >mp1,mp2;
int T;
int main(){
scanf("%d",&T);
for(int op,x,y;T--;){
scanf("%d%d%d",&op,&x,&y);
if(op==1)mp1[y].insert(x);
else if(op==2)mp2[y].insert(x);
else printf("%d\n",mp1[y].order_of_key(x+1)-mp2[y].order_of_key(x+1));
}
return 0;
}