zoukankan      html  css  js  c++  java
  • 树状数组区间修改单点查询模板

    
    #include<cstdio>
    #include<iostream>
    using namespace std;
    int a[100005],b[100005];
    int lowbit(int x)
    {
    	return x&(-x);
    }
    int n;
    void add(int x,int y)
    {
    	for(int i=x;i<=n;i+=lowbit(i))
    	{
    		b[i]+=y;
    	}
    }
    int sum(int x)
    {
    	int ans=0;
    	for(int i=x;i;i-=lowbit(i))
    	{
    		ans+=b[i];
    	}
    	return ans;
    }
    int main()
    {
    	freopen("shulieb.in","r",stdin);
    	freopen("shulieb.out","w",stdout); 
    	int m;
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++)
    	{
    		scanf("%d",&a[i]);
    		//add(i,a[i]);
    	}
    	scanf("%d",&m);
    	int x,y,k;
    	for(int i=1;i<=m;i++)
    	{
    		char s[10];
    		scanf("%s",s);
    		if(s[0]=='A')
    		{
    			scanf("%d%d%d",&x,&y,&k);
    			add(x,k);
    			add(y+1,-k);
    		}
    		else
    		if(s[0]=='Q')
    		{
    			scanf("%d",&x);
    			printf("%d
    ",sum(x)+a[x]);
    		}
    	}
    	return 0;
    } 
    
  • 相关阅读:
    每日日报30
    每日作业报告
    每日作业报告
    每日作业报告
    每日作业报告
    每日作业报告
    每日作业报告
    每日作业报告
    每日作业报告
    Java学习的第四十三天
  • 原文地址:https://www.cnblogs.com/ShineEternal/p/11306951.html
Copyright © 2011-2022 走看看