码迷,mamicode.com
首页 > 编程语言 > 详细

树状数组

时间:2018-07-08 18:07:16      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:bsp   查询   owb   cin   name   query   code   string   pre   

//树状数组
//支持给某位置增加常数与查询前缀和
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
int n,a[1001],tree[1001];//tree树状数组 
int lowbit(int x)//表示2^k k是二进制数x的末尾0个数
{
    return x&(-x); 
}
int query(int x)
{
    int sum=0;
    int time=lowbit(x);
    for(int i=x;i>0;i-=time)
        sum+=tree[i];
    return sum;
} 
int add(int x,int y)
{
    int time=lowbit(x);
    for(int i=x;i<=n;i+=time)
        tree[i]+=y;
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)//初始化1
    {
        cin>>a[i];
        add(i,a[i]);
    }
    //单位置修改+区间求和[L~R]
    {
        add(x,y);
        a[i]=y;
        
        int ans=query(R)-query(L-1);
    }
    for(int i=1;i<=n;i++)//初始化2 
    {
        cin>>a[i];
        add(i,a[i]-a[i-1]);
    }
    //区间修改[L~R]+单位置查询
    {
        add(L,y);
        add(R+1,-y);
        
        int ans=query(x); 
    }
    return 0;
}

 

树状数组

标签:bsp   查询   owb   cin   name   query   code   string   pre   

原文地址:https://www.cnblogs.com/water-radish/p/9280658.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!