P3373求助
  • 板块学术版
  • 楼主Indestructible
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/4/17 13:36
  • 上次更新2024/4/17 17:34:56
查看原帖
P3373求助
1126325
Indestructible楼主2024/4/17 13:36
#include<bits/stdc++.h>
#define int long long
#define maxn 100005
#define ls(x) (x<<1)
#define rs(x) (x<<1|1)
using namespace std;
struct SegmentTree{
	int point;
	int tag_add;
	int tag_mul;
}tree[maxn<<2];
int num[maxn];
int n,m,mod,op,x,y,k;
void pushup(int p){
	tree[p].point=(tree[ls(p)].point+tree[rs(p)].point)%mod;
}
void build(int pl,int pr,int p){
	tree[p].tag_mul=1;
	if (pl==pr){ tree[p].point=num[pl]%mod; return; }
	int mid=(pl+pr)>>1;
	build(pl,mid,ls(p));
	build(mid+1,pr,rs(p));
	pushup(p);
}
void addtag(int pl,int pr,int p,int k,int isadd){
	if (isadd) tree[p].tag_add+=k,tree[p].point=(tree[p].point+(pr-pl+1)*k)%mod;
	else tree[p].tag_mul*=k,tree[p].point=tree[p].point*k%mod;
}
void pushdown(int pl,int pr,int p){
	int mid=(pl+pr)>>1;
	addtag(pl,mid,p,tree[p].tag_mul,0);
	addtag(mid+1,pr,p,tree[p].tag_mul,0);
	addtag(pl,mid,p,tree[p].tag_add,1);
	addtag(mid+1,pr,p,tree[p].tag_add,1);
	tree[p].tag_add=0;
	tree[p].tag_mul=1;
}
void update(int pl,int pr,int p,int l,int r,int k,bool isadd){
	if (pl==pr){ addtag(pl,pr,p,k,isadd); return; }
	pushdown(pl,pr,p);
	int mid=(pl+pr)>>1;
	if (l<=mid) update(pl,mid,ls(p),l,r,k,isadd);
	if (r>mid) update(mid+1,pr,rs(p),l,r,k,isadd);
	pushup(p);
}
int query(int pl,int pr,int p,int l,int r){
	if (l<=pl && r>=pr) return tree[p].point%mod;
	pushdown(pl,pr,p);
	int mid=(pl+pr)>>1,ans=0;
	if (l<=mid) ans+=query(pl,mid,ls(p),l,r);
	if (r>mid) ans+=query(mid+1,pr,rs(p),l,r);
	return ans%mod;
}
signed main(){
	scanf("%lld%lld%lld",&n,&m,&mod);
	for (int i=1;i<=n;i++) scanf("%lld",&num[i]);
	build(1,n,1);
	for (int i=1;i<=m;i++){
		scanf("%lld",&op);
		if (op==1) scanf("%lld%lld%lld",&x,&y,&k),update(1,n,1,x,y,k,0);
		if (op==2) scanf("%lld%lld%lld",&x,&y,&k),update(1,n,1,x,y,k,1);
		if (op==3) scanf("%lld%lld",&x,&y),printf("%lld\n",query(1,n,1,x,y));
	}
	return 0;
}

70分TLE,测试了 #2 ,结果到 1 54190 95095 1236 的时候输出一个 7 就卡在那了,求 dalao 帮助,悬关

2024/4/17 13:36
加载中...