树状数组
来源:互联网 发布:红叶知弦调教片段 编辑:程序博客网 时间:2024/06/05 12:41
//最基本的树状数组#include<iostream> #include<cstring>#define size 1000using namespace std;int A[size],C[size],N;void add(int x,int d);int lowbit(int x);int sum(int x);void build();int lowbit(int x) //求x得二进制表达式中最右边的1对应的值(不是序号){ return x&-x;}void build() //初始化数组{ for(int i=1;i<=N;i++) { add(i,A[i]); }}void add(int x,int d) //在X的位置加上大小为d的数{ while(x<=N) { C[x]+=d; x+=lowbit(x); }}int sum(int x) //求1到X的和{ int ret=0; while(x>=1) { ret+=C[x]; x=x-lowbit(x); } return ret;}int main(){ cin>>N; memset(C,0,sizeof(C)); for(int i=1;i<=N;i++) { cin>>A[i]; } build(); for(int i=1;i<=N;i++) { cout<<C[i]<<" "; } cout<<endl; for(int i=1;i<=N;i++) { cout<<sum(i)<<" "; } cout<<endl; return 0;}
0 0
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- 树状数组
- android 界面知识点
- C++ 11语法甜点1
- 有关Java线程机制的浅析
- 语法甜点11:非成员的begin和end
- 颠倒单词在字符串中的顺序
- 树状数组
- HODJ1004
- toString 详解
- C++ 11 tuple & 可变参数模板
- C++11 function
- 【CodeForces】38G Queue 伸展树
- 致我们终将忘记的算法(单链表那些事)
- std::ostringstream 使用
- adr和ldr的区别