数据结构 树状数组

来源:互联网 发布:手机桌面软件推荐 编辑:程序博客网 时间:2024/06/11 04:59

位运算就是快

#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;}

0 0
原创粉丝点击