lowbit

数组的第 i 位存储的是以 i 为结尾的长度为lowbit(i) 的一段的和.

int lowBit(x) {
return x & -x;
}

加点

int n, bt[maxn];

void btAdd(int pos, int delta) {
for (; pos <= n; pos += lowBit(p)) {
bt[pos] += delta;
}
}

查询

int btSum(int pos) {
int ans = ;
for (; pos; pos -= lowBit(p)) {
ans += bt[p];
}
return ans;
}

完整代码

略有不同的,dad曾经教给我,树状数组这么写

//线段树练习1
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 100010
using namespace std;
int n,m,t[maxn];
void add(int k,int z)
{
while(k<=n)
{
t[k]+=z;
k+=k&(-k);
}
}
int find(int k)
{
int ans=;
while(k)
{
ans+=t[k];
k-=k&(-k);
}
return ans;
}
int main()
{
int i,j,k,x;
scanf("%d",&n);
for(i=;i<=n;i++)
{
scanf("%d",&x);
add(i,x);
}
scanf("%d",&m);
for(i=;i<=m;i++)
{
int x,y,z,w;
scanf("%d",&w);
scanf("%d%d",&x,&y);
if(w==)
add(x,y);
else if(w==)
printf("%d\n",find(y)-find(x-));
}
return ;
}
//线段树练习2
#include<iostream>
using namespace std;
int t[],n,m;
void add(int k,int z)
{
while(k<=n)
{
t[k]+=z;
k+=k&(-k);
}
}
int find(int a)
{
int ans=;
while(a)
{
ans+=t[a];
a-=a&(-a);
}
return ans;
}
int main()
{
int s;
cin>>n;
for(int i=;i<=n;i++)
cin>>s,
add(i,s);
cin>>m;
for(int i=;i<=m;i++)
{
int x,y,w,z;
cin>>w;
if(w==)
{
cin>>x;
cout<<find(x)-find(x-)<<endl;
}
if(w==)
{
cin>>x>>y>>z;
for(int j=x;j<=y;j++)
add(j,z);
}
}
}

树状数组laekov的更多相关文章

  1. BZOJ 1103: [POI2007]大都市meg [DFS序 树状数组]

    1103: [POI2007]大都市meg Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2221  Solved: 1179[Submit][Sta ...

  2. bzoj1878--离线+树状数组

    这题在线做很麻烦,所以我们选择离线. 首先预处理出数组next[i]表示i这个位置的颜色下一次出现的位置. 然后对与每种颜色第一次出现的位置x,将a[x]++. 将每个询问按左端点排序,再从左往右扫, ...

  3. codeforces 597C C. Subsequences(dp+树状数组)

    题目链接: C. Subsequences time limit per test 1 second memory limit per test 256 megabytes input standar ...

  4. BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]

    2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 2545  Solved: 1419[Submit][Sta ...

  5. BZOJ 3529: [Sdoi2014]数表 [莫比乌斯反演 树状数组]

    3529: [Sdoi2014]数表 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1399  Solved: 694[Submit][Status] ...

  6. BZOJ 3289: Mato的文件管理[莫队算法 树状数组]

    3289: Mato的文件管理 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 2399  Solved: 988[Submit][Status][Di ...

  7. 【Codeforces163E】e-Government AC自动机fail树 + DFS序 + 树状数组

    E. e-Government time limit per test:1 second memory limit per test:256 megabytes input:standard inpu ...

  8. 【BZOJ-3881】Divljak AC自动机fail树 + 树链剖分+ 树状数组 + DFS序

    3881: [Coci2015]Divljak Time Limit: 20 Sec  Memory Limit: 768 MBSubmit: 508  Solved: 158[Submit][Sta ...

  9. 树形DP+DFS序+树状数组 HDOJ 5293 Tree chain problem(树链问题)

    题目链接 题意: 有n个点的一棵树.其中树上有m条已知的链,每条链有一个权值.从中选出任意个不相交的链使得链的权值和最大. 思路: 树形DP.设dp[i]表示i的子树下的最优权值和,sum[i]表示不 ...

随机推荐

  1. POJ - 1611 The Suspects 【并查集】

    题目链接 http://poj.org/problem?id=1611 题意 给出 n, m 有n个人 编号为 0 - n - 1 有m组人 他们之间是有关系的 编号为 0 的人是 有嫌疑的 然后和 ...

  2. UVA - 10305 【全排列】

    题意 要求给出一组 包含 1 - N 的数字的序列 要求这个序列 满足 题给的限制条件 比如 1 2 就是 1 一定要在 2 前面 思路 因为 数据规模较小 可以用 全排列 然后判断每个序列 是否满足 ...

  3. js作用域总结

    一.在ES5中,js 的作用域 js作用域,只有全局作用域与函数作用域,没有块级作用域. 1.全局作用域 var a = 10; function aaa() {alert(a) } function ...

  4. Linux CentOS系统上安装Eclipse

    Linux CentOS系统上安装Eclipse 1. 下载Eclipse软件 下载网址:http://www.eclipse.org/downloads/packages/release/Juno/ ...

  5. 分享知识-快乐自己:初识 Hibernate 概念片(一)

    1):什么是 Hibernate? Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibe ...

  6. 有时候,Visual C++代码中加中文注释会导致错误!

    今天做题发现了个奇葩错误,以此警戒自己. 张某,做的一道题. --------------------------------------------------------------------- ...

  7. codeforces 706D D. Vasiliy's Multiset(trie树)

    题目链接: D. Vasiliy's Multiset time limit per test 4 seconds memory limit per test 256 megabytes input ...

  8. [acm]HDOJ 2064 汉诺塔III

    题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=2064 汉诺塔变种,只能从中间专业,递归关系为:f(n)=3*f(n-1)+2. //汉诺塔变种,只能 ...

  9. linux中python easy_install命令

    centos 下安装 python easy_installcurl -O http://peak.telecommunity.com/dist/ez_setup.pypython ez_setup. ...

  10. ORA-21561: OID generation failed

    ORA-21561: OID generation failed 从AIX机器上连Linux上的Oracle数据库时报ORA-21561: OID generation failed错误.不是因为AI ...