题面
BZOJ https://www.lydsy.com/JudgeOnline/problem.php?id=5334
洛谷 https://www.luogu.org/problemnew/show/P4588
题解
简单的线段树模板题???
咕咕咕.
- #include<iostream>
- #include<cstdio>
- #include<cstdlib>
- #include<cstring>
- #include<cmath>
- #include<algorithm>
- using namespace std;
- #define ll long long
- #define MAX 100100
- #define lson (now<<1)
- #define rson (now<<1|1)
- inline int read()
- {
- int x=0;bool t=false;char ch=getchar();
- while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
- if(ch=='-')t=true,ch=getchar();
- while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
- return t?-x:x;
- }
- int Q,MOD,tot;
- int t[MAX<<2];
- void Build(int now,int l,int r)
- {
- t[now]=1;if(l==r)return;
- int mid=(l+r)>>1;
- Build(lson,l,mid);Build(rson,mid+1,r);
- }
- void Modify(int now,int l,int r,int p,int w)
- {
- if(l==r){t[now]=w;return;}
- int mid=(l+r)>>1;
- if(p<=mid)Modify(lson,l,mid,p,w);
- else Modify(rson,mid+1,r,p,w);
- t[now]=1ll*t[lson]*t[rson]%MOD;
- }
- int main()
- {
- int T=read();
- while(T--)
- {
- int Q=read();MOD=read();Build(1,1,Q);
- for(int i=1;i<=Q;++i)
- {
- int opt=read();
- if(opt==1)Modify(1,1,Q,i,read());
- else Modify(1,1,Q,read(),1);
- printf("%d\n",t[1]);
- }
- }
- return 0;
- }
来源: http://www.bubuko.com/infodetail-2721286.html