蒟蒻求问为何全wa
查看原帖
蒟蒻求问为何全wa
218023
ttt1493b楼主2021/1/29 21:33
#include <cstdio>
#define lowbit(x) ((x)&(-x))
#define N 500009
#define ll long long
using namespace std;
ll t1[N],t2[N],n,m,a[N];
void add(ll k,ll p){
	ll v=k*p;
	for(;k<=n;k+=lowbit(k))t1[k]+=p,t2[k]+=v;
}
void add_range(ll l,ll r,ll p){
	add(l,p);
	add(r+1,-p);
}
ll getsum(ll *t,ll k){
	ll ret=0;
	for(;k;k-=lowbit(k)){
		ret+=t[k];
	}
	return ret;
}
ll get_range(ll l,ll r){
	return ((r+1ll)*getsum(t1,r)-getsum(t2,r))-(l*1ll*getsum(t1,l-1)-getsum(t2,l-1));
}
int main(){
	scanf("%lld%lld",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i]);
		add(i,a[i]-a[i-1]);
	}
	while(m--){
		int o,x,y,k;
		scanf("%lld%lld",&o,&x);
		if(o==1){
			scanf("%lld%lld",&y,&k);
			add_range(x,y,k);
		}
		else printf("%lld\n",get_range(x,x));
	}
}

我自己在本地都跑过了,没有问题啊

2021/1/29 21:33
加载中...