社区讨论
线段树求组MLE
P2464[SDOI2008] 郁闷的小 J参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhjujfuz
- 此快照首次捕获于
- 2025/11/04 08:44 4 个月前
- 此快照最后确认于
- 2025/11/04 08:44 4 个月前
求助
map T一个
un...map MLE两个
gp...table MLE一个
cc..._table MLE两个
CPPun...map MLE两个
gp...table MLE一个
cc..._table MLE两个
#include<bits/stdc++.h>
#include<bits/extc++.h>
#define ls id<<1
#define rs id<<1|1
using namespace __gnu_pbds;
using namespace std;
const int N=1e5+5;
int sum,n,Q,a[N];
struct node{
gp_hash_table<int,int>t;
}Tree[270000];
void Qxiu(int l,int r,int left,int right,int id,int f){
Tree[id].t[f]++;
Tree[id].t[a[left]]--;
if(left<=l&&r<=right){
return;
}
int mid=l+r>>1;
if(left<=mid)Qxiu(l,mid,left,right,ls,f);
if(right>mid)Qxiu(mid+1,r,left,right,rs,f);
}
void Qzo(int l,int r,int left,int right,int id,int f){
if(left<=l&&r<=right){
sum+=Tree[id].t[f];
return;
}
int mid=l+r>>1;
if(left<=mid)Qzo(l,mid,left,right,ls,f);
if(right>mid)Qzo(mid+1,r,left,right,rs,f);
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n>>Q;
for(int i=1;i<=n;i++){
int X;
cin>>X;
Qxiu(1,n,i,i,1,X);
a[i]=X;
}
while(Q--){
char op;
int l,r,k;
sum=0;
cin>>op>>l>>r;
if(op=='Q'){
cin>>k;
Qzo(1,n,l,r,1,k);
cout<<sum<<"\n";
}
else{
Qxiu(1,n,l,l,1,r);
a[l]=r;
}
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...