神秘的编译失败
  • 板块灌水区
  • 楼主supermzc
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/10/25 19:40
  • 上次更新2024/10/25 20:24:55
查看原帖
神秘的编译失败
1034549
supermzc楼主2024/10/25 19:40

报错提示:测评记录

编译信息显示Nothing is compiled: OUTPUT exceeds.

经过我的反复测试(二分),确定是数组过大导致,但是占用空间35000098/1024/1024=11.4MB左右,没有超过限制,为什么啊(本地可以正常编译)

贴上报错代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int MAXN=500009;
int mod;
struct node{
	int sum=0,muln=1,addn=0;
};
node tr[MAXN];
void push_down(int pos,int l,int r){
	if(tr[pos].muln!=1||tr[pos].addn){
		int mid=(l+r)>>1,ls=pos<<1,rs=pos<<1|1;
		tr[ls].sum=(tr[ls].sum*tr[pos].muln+tr[pos].addn*(mid-l+1))%mod;
		tr[rs].sum=(tr[rs].sum*tr[pos].muln+tr[pos].addn*(r-mid))%mod;
		tr[ls].addn=(tr[pos].muln*tr[ls].addn+tr[pos].addn)%mod,tr[ls].muln=(tr[ls].muln*tr[pos].muln)%mod;
		tr[rs].addn=(tr[pos].muln*tr[rs].addn+tr[pos].addn)%mod,tr[rs].muln=(tr[rs].muln*tr[pos].muln)%mod;
		tr[pos].addn=0,tr[pos].muln=1;
	}
}
void add(int pos,int l,int r,int x,int y,int val){//当前l,r 目标 x,y
	if(x<=l&&r<=y){
		//printf("tar:[%d,%d] now:[%d,%d] all in\n",x,y,l,r);
		tr[pos].addn=(tr[pos].addn+val)%mod;
		tr[pos].sum=(tr[pos].sum+(r-l+1)*val)%mod;
		return;
	}
	push_down(pos,l,r);
	int mid=(l+r)>>1;
	if(x<=mid)add(pos<<1,l,mid,x,y,val);
	if(y>mid)add(pos<<1|1,mid+1,r,x,y,val);
	tr[pos].sum=(tr[pos<<1].sum+tr[pos<<1|1].sum)%mod;
}
void mul(int pos,int l,int r,int x,int y,int val){
	if(x<=l&&r<=y){
		tr[pos].sum=(tr[pos].sum*val)%mod;
		tr[pos].addn=(tr[pos].addn*val)%mod,tr[pos].muln=(tr[pos].muln*val)%mod;
		return;
	}
	push_down(pos,l,r);
	int mid=(l+r)>>1;
	if(x<=mid)mul(pos<<1,l,mid,x,y,val);
	if(y>mid)mul(pos<<1|1,mid+1,r,x,y,val);
	tr[pos].sum=(tr[pos<<1].sum+tr[pos<<1|1].sum)%mod;
}
int query(int pos,int l,int r,int x,int y){
	if(x<=l&&r<=y){
		return tr[pos].sum%mod;
	}
	push_down(pos,l,r);
	int mid=(l+r)>>1,ans=0;
	if(x<=mid)ans=(ans+query(pos<<1,l,mid,x,y))%mod;
	if(y>mid)ans=(ans+query(pos<<1|1,mid+1,r,x,y))%mod;
	return ans;
}
signed main(){
	int op,x,y,k,n,m;
	ios::sync_with_stdio(0);
	/*cin.tie(0);
	cout.tie(0);*/
	cin>>n>>m>>mod;
	for(int i=1;i<=n;i++){
		cin>>x;
		add(1,1,n,i,i,x);
	}
	for(int i=1;i<=m;i++){
		cin>>op;
		if(op==2){
			cin>>x>>y>>k;
			add(1,1,n,x,y,k);
		}
		if(op==3){
			cin>>x>>y;
			cout<<query(1,1,n,x,y)%mod<<'\n';
		}
		if(op==1){
			cin>>x>>y>>k;
			mul(1,1,n,x,y,k);
		}
	}
	return 0;
}
2024/10/25 19:40
加载中...