树状数组求调,样例过不了
  • 板块P2357 守墓人
  • 楼主_wakeup
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/12/15 08:26
  • 上次更新2023/10/24 07:40:52
查看原帖
树状数组求调,样例过不了
666741
_wakeup楼主2022/12/15 08:26
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<map>
#define ll long long
using namespace std;
ll n,m,a[200010],c[200010];
int lowbit(int x)
{
	return x&-x;
}
void add(int x,ll k)
{
	for(ll i=x;i<=n;i+=lowbit(i))c[i]+=k;
}
ll he(int x)
{
	ll cnt=0;
	for(int i=x;i>0;i-=lowbit(i))cnt+=c[i];
	return cnt;
}
int main()
{
	cin>>n>>m;
	for(ll i=1;i<=n;i++)
	{
		cin>>a[i];
		add(i,a[i]-a[i-1]);
	}
	while(m--)
	{
		ll t,x,y,k;
		cin>>t;
		if(t==1)
		{
			cin>>x>>y>>k;
			add(x,k);
			add(y+1,-k);
		}
		else if(t==2)
		{
			cin>>k;
			add(1,k);
		}
		else if(t==3)
		{
			cin>>k;
			add(1,-k);
		}
		else if(t==4)
		{
			cin>>x>>y;
			cout<<he(y)-he(x-1)<<endl;
		}
		else cout<<he(1)<<endl;
	}
	return 0;
} 
2022/12/15 08:26
加载中...