【树状数组(BIT)】
来源:互联网 发布:淘宝网查机票 编辑:程序博客网 时间:2024/06/06 12:38
【树状数组模版】
注意:树状数组x必须>0,因为lowbit(0) = 0,会死循环;
【单点更新区间查询】在log(n)内修改单点,求出cnt[x] = a[1]~a[x]之和
求区间[a,b]之和只要求出 sum(b)-sum(a-1)即可
#define rep(i,a,n) for(int i = a; i < n; i++)#define repe(i,a,n) for(int i = a; i <= n; i++)#define per(i,n,a) for(int i = n; i >= a; i--)#define clc(a,b) memset(a,b,sizeof(a))#define INF 0x3f3f3f3ftypedef long long LL;#define MAXN 100010int cnt[MAXN],mx, a[MAXN];inline int lowbit(int x){return x&-x;}int sum(int x){int ans = 0;while(x > 0){ans += cnt[x];x -= lowbit(x);}return ans;}void update(int x, int num){while(x <= mx){cnt[x] += num;x += lowbit(x);}}
【区间更新单点查询】在log(n)内修改区间a[1]~a[x]覆盖次数,求出单点被覆盖的次数
要修改区间[a,b]的覆盖次数+1,可以 update(b,1), update(a-1,-1);
#define rep(i,a,n) for(int i = a; i < n; i++)#define repe(i,a,n) for(int i = a; i <= n; i++)#define per(i,n,a) for(int i = n; i >= a; i--)#define clc(a,b) memset(a,b,sizeof(a))#define INF 0x3f3f3f3ftypedef long long LL;#define MAXN 100010int cnt[MAXN],mx, a[MAXN];inline int lowbit(int x){return x&-x;}int sum(int x){int ans = 0;while(x <= mx){ans += cnt[x];x += lowbit(x);// += 是点 -=是区间,所用到的点独立,区间不相交}return ans;}void update(int x, int num){while(x > 0){cnt[x] += num;x -= lowbit(x);}}
0 0
- BIT树状数组
- 【树状数组(BIT)】
- 树状数组BIT 模板
- 树状数组(BIT)
- [leetcode] 树状数组 BIT
- 树状数组 BIT
- 树状数组BIT
- BIT树状数组
- 树状数组(BIT)
- 树状数组(BIT)
- 树状数组 BIT
- 树状数组BIT-乒乓比赛
- 模板_树状数组(BIT)
- 一维树状数组BIT
- hdu2492 Ping pong 树状数组BIT
- hdu1050 Moving Tables BIT树状数组
- HDOJ 1196 Lowest Bit(树状数组实现)
- 树状数组,二查索引树,BIT
- arm平台搭建vsftpd服务
- Struts2.ActionSupport
- Binary Tree Postorder Traversal
- coccos2dx环境配置(android)
- 数据挖掘与数据分析好书推荐
- 【树状数组(BIT)】
- 正则表达式
- FTP SFTP TFTP的区别
- 9 basic principles of responsive web design
- 算法——排序之冒泡排序
- Linux内核的idle进程分析
- 图片上传生成缩略图
- windows下Apache+tomcat集群-基于Proxy的方式
- Smali--Dalvik虚拟机指令语言-->【android_smali语法学习一】