炸了
查看原帖
炸了
289056
北射天狼楼主2022/1/25 17:33

P4145

#include <bits/stdc++.h>
using namespace std;
#define AK_IOI 10100
long long n,m;
struct node{
	long long sum;
	long long maxn;
}zzp[AK_IOI];
long long Naoh[AK_IOI];
void pushup(long long rt){
	zzp[rt].sum=zzp[rt<<1].sum+zzp[rt<<1|1].sum;
	zzp[rt].maxn=max(zzp[rt<<1].maxn,zzp[rt<<1|1].maxn);
}
void build(long long l,long long r,long long rt){
	if (l==r){
		zzp[rt].sum=Naoh[l];
		zzp[rt].maxn=Naoh[l];
		return ;
	}
	long long mid=(l+r)>>1;
	build(l,mid,rt*2);
	build(mid+1,r,rt*2+1);
	pushup(rt);
}
void ccf(long long l,long long r,long long x,long long y,long long rt){
	if (x>r||y<l)    return ;
	if (zzp[rt].maxn==1)     return ;
	if (x==y){
		zzp[rt].sum=sqrt(zzp[rt].sum);
		zzp[rt].maxn=zzp[rt].sum;
		return ;
	}
	long long mid=(x+y)>>1;
	ccf(l,r,x,mid,rt*2);
	ccf(l,r,mid+1,y,rt*2+1);
	pushup(rt);
}
long long que(long long l,long long r,long long x,long long y,long long rt){
	if (x>r||y<l)    return 0;
	if (l>=x&&y<=r)    return zzp[rt].sum;
	long long mid=(x+y)>>1;
	return (que(l,r,x,mid,rt*2)+que(l,r,mid+1,y,rt*2+1));
}
int main()
{
	cin>>n;
	for (long long i=1;i<=n;i++)    cin>>Naoh[i];
	build(1,n,1);
	cin>>m;
	for (long long i=1;i<=m;i++){
		int c,m,h;
		cin>>c>>m>>h;
		if (c==1){
			ccf(m,h,1,n,1);
		}
		if (c==0){
			cout<<que(m,h,1,n,1)<<endl;
		}
	}
	return 0;
}

这个代码哪里错了啊?

好像ccf函数有错,但本蒟蒻查不出来awa。

2022/1/25 17:33
加载中...