求助,遇到了申必的BUG
  • 板块学术版
  • 楼主Kio_
  • 当前回复2
  • 已保存回复2
  • 发布时间2020/9/8 21:54
  • 上次更新2023/11/5 13:31:54
查看原帖
求助,遇到了申必的BUG
127925
Kio_楼主2020/9/8 21:54

RT

奇怪的BUG:当第二行输入的末尾有空格时,程序就会终止运行,无法继续输入,也没有输出,也没有报错,一直卡在输入界面......

求助QwQ

输入:

5 5
1 5 4 2 3
2 2 4
1 2 3 2
2 3 4
1 1 5 1
2 1 4

代码:(线段树)

#include<cstdio>
#define ll long long
using namespace std;
int n,m;
ll ans;
long long tree[4*100020];
ll lazy[4*100020];

long long read()
{
	long long num=0;
	int f=1;
	char c=getchar();
	while(c<'0'||c>'9')if(c=='-'){f=-1;c=getchar();}
	while('0'<=c&&c<='9')num=num*10+c-'0',c=getchar();
	return num*f;
}

int build(int l,int r,int a)
{
	//printf("1 ");
	if(l==r)
	{
		tree[a]=read();
		return tree[a];
	}
	int mid=(l+r)>>1;
	tree[a] += build(l,mid,a<<1);
	tree[a] += build(mid+1,r,(a<<1)|1);
	return tree[a];
}

void push_up(int a)
{
	tree[a] = tree[a<<1] + tree[(a<<1)|1];
}

void push_down(int a,int l,int r)
{
	if(lazy[a])
	{
		lazy[a<<1] += lazy[a];
		lazy[(a<<1)|1] += lazy[a];
		tree[a<<1] += (((l+r)>>1)-l+1)*lazy[a];
		tree[(a<<1)|1] += (r-((l+r)>>1))*lazy[a];
		lazy[a]=0;
	}
}

void change(int l,int r,int k,int ln,int rn,int a)
{
	
	if(ln>=l && rn<=r)
	{
		lazy[a] += k;
		tree[a] += (rn-ln+1)*k;
		return;
	}
	if(ln==rn)return;
	push_down(a,ln,rn);
	int mid=(ln+rn)>>1;
	if(rn>r||ln<l)
	{
		change(l,r,k,ln,mid,a<<1);
		change(l,r,k,mid+1,rn,(a<<1)|1);
	}
		
	push_up(a);
}

void sum(int l,int r,int ln,int rn,int a)
{
//	printf("1 ");
	if(ln>=l && rn<=r)
	{
		ans += tree[a];
	//	printf("%d %d %d %d\n",ans,a,ln,rn);
		return;
	}
	if(ln==rn)return;
	push_down(a,ln,rn);
	int mid=(ln+rn)>>1;
	if(rn>r||ln<l)
	{
		sum(l,r,ln,mid,a<<1);
		sum(l,r,mid+1,rn,(a<<1)|1);
	}
	
	push_up(a);
}
int main()
{
	n=read(),m=read();
	build(1,n,1);
//	for(int i=1;i<=n*4;i++)printf("%lld ",tree[i]);
//	printf("\n");
	for(int i=1;i<=m;i++)
	{
		
		int z=read();
	//	printf("1 ");
		if(z==1)
		{
			int z1=read(),z2=read(),k=read();
			change(z1,z2,k,1,n,1);
		}
		else
		{
			int z1=read(),z2=read();
			sum(z1,z2,1,n,1);
			printf("%lld\n",ans);
			ans=0;
		}
	}
}

(原题:P3372【模板】线段树1

求dalao指教!QwQ

2020/9/8 21:54
加载中...