线段树,感觉题意没懂
查看原帖
线段树,感觉题意没懂
1113058
hlcg楼主2024/11/20 16:28

rt

#include<bits/stdc++.h>
#define int long long
#define lc p<<1
#define rc p<<1|1
#define N 100010
using namespace std;
struct lsx{
	int l,r,mul;
};
lsx a[4*N];
int q,m;
void pp(int p){
	a[p].mul=(a[lc].mul*a[rc].mul)%m;
}
void build(int p,int l,int r){
	a[p].l=l;
	a[p].r=r;
	a[p].mul=1;
	if(l==r){
		return ;
	}
	int mid=l+r>>1;
	if(l<=m){
		build(lc,l,m);
	}else{
		build(rc,m+1,r);
	}
	pp(p);
}
void ch(int p,int x,int c){
	if(a[p].l==x&&a[p].r==x){
		a[p].mul=c;
		return ;
	}
	int mid=(a[p].l+a[p].r)>>1;
	if(x<=mid){
		ch(lc,x,c);
	}
	if(x>mid){
		ch(rc,x,c);
	}
	pp(p);
}
signed main(){
	int t;
	while(t--){
	int cnt=0;
	cin>>q>>m;
	build(1,1,q);
	for(int i=1;i<=q;i++){
		int pb,xx;
		cin>>pb>>xx;
		if(pb==1){
			cout<<xx;
			ch(1,i,xx);
		}else{
			ch(1,xx,1);
			cout<<a[1].mul;
		}
	}
	}
	return 0;
}

连样例输出都有问题,球跳

2024/11/20 16:28
加载中...