摘要:
树状数组:(插点法插线法)最常见的一种用途是求一个数列的前N项和比如说数组a[] 吧:把他转化一下存入树状数组c[] 中如:c[1]=a[1]c[2]=a[1]+a[2]c[3]=a[3]c[4]=a[1]+a[2]+a[3]+a[4]......................................................c[16]=a[1]+a[2]+....................+a[16]也即c[n]管理着2^k个数 (k代表二进制n最后连续有多少个0) c[n]为这个连续2^k个数的最后一个因此有 c[n]=a[n-2^k+1]+.....+a[n];则: 阅读全文
摘要:
View Code 1 /* 2 问题: 3 在一个数组中 不断在某些区间中增加值 4 询问 某一节点 的值 5 思路: 6 树状数组(插线法): 7 */ 8 #include<iostream> 9 #include<cstdio>10 using namespace std;11 12 int lt[1000001];13 int T,N;14 15 int lowbit(int x)16 {17 return x&(-x);18 }19 void add(int s,int v)20 {21 while(s>0)22 {23 lt[s]+=v;24 阅读全文