您的位置:首页 > 理论基础 > 数据结构算法

数据结构 树状数组

2015-07-15 19:59 405 查看
位运算就是快
#include<iostream>
#include<cstring>
using namespace std;

int a[20];
int sum[20];
int n;
int bit[100];

int getsum(int x)
{
    int sum=0;
    while(x)
    {
        sum+=bit[x];
        x=x-(x&-x);
    }
    return sum;
}
void add(int x,int y)
{
    while(y<=n)
    {
        bit[y]+=x;
        y=y+(y&-y);
    }
}

int main()
{
    cout<<"请输入元素的个数:"<<endl;
    cin>>n;
    int i,j;
    memset(bit,0,sizeof(bit));
    for(i=1;i<=n;i++)
    {
        cin>>a[i];
        add(a[i],i);
    }
    int ans;
    cout<<"请输入前x个的和x:"<<endl;
    int x;
    cin>>x;
    ans=getsum(x);  
    cout<<ans<<endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: