树状数组的区间修改和区间查询模板
来源:互联网 发布:国家网络安全法 编辑:程序博客网 时间:2024/06/05 17:38
例题:http://codevs.cn/problem/1082/
#include <iostream>using namespace std;#define lowbit(x) ((x) & (-(x)))long long arrC1[200010], arrC2[200010];long long iNumTot;long long GetSum(long long iIndex){long long iAns1 = 0, iAns2 = 0;for (int i = iIndex; i; i -= lowbit(i)){iAns1 += arrC1[i];iAns2 += arrC2[i];}return iIndex * iAns1 - iAns2;}void AddNum(int iIndex, long long iDelta){for (int i = iIndex; i <= iNumTot; i += lowbit(i)){arrC1[i] += iDelta;arrC2[i] += (iIndex - 1) * iDelta;}}int main(){cin >> iNumTot;long long iTmp;for (int i = 1; i <= iNumTot; i++){cin >> iTmp;AddNum(i, iTmp);AddNum(i + 1, -iTmp);}int iCaseTot;cin >> iCaseTot;long long iType, a, b, iDelta;while (iCaseTot--){cin >> iType >> a >> b;if (a > b)swap(a, b);if (iType == 1){cin >> iDelta;AddNum(a, iDelta);AddNum(b + 1, -iDelta);}else if (iType == 2)cout << GetSum(b) - GetSum(a - 1) << endl;}return 0;}
阅读全文
0 0
- 树状数组的区间修改和区间查询模板
- 【模板】树状数组的区间加值和区间查询
- [模板]树状数组(区间修改单点查询)
- CodeVS 1082 (区间修改+区间查询树状数组模板)
- 树状数组的区间修改,单点查询
- 树状数组~poj3468~区间修改 区间查询
- 树状数组 --区间查询+区间修改
- 【codevs1082】【树状数组】 区间修改 区间查询
- 笔记 树状数组--区间查询+区间修改
- 树状数组实现 区间修改+区间查询
- 树状数组区间修改区间查询
- 树状数组 区间修改+区间查询
- 树状数组区间修改区间查询
- 树状数组 区间修改 区间查询
- 树状数组 区间修改查询
- 树状数组区间修改+查询
- 可以区间修改区间查询的树状数组云云
- 【小结】树状数组的区间修改与区间查询
- golang 常量的iota使用
- ASP.NET Core Razor页面 vs MVC
- Storm消费kafka写入华为云Hbase
- #ifdef __cplusplus的初步解释
- 大数据集群JVM调优&内存管理
- 树状数组的区间修改和区间查询模板
- 剑指offer_链表---从尾到头打印链表
- 让sublime text像IDE一样格式化任何类型代码,不是jsFormat
- hadoop distcp使用
- 天平
- spring 注解 AOP
- 库的编译
- python 检测白名单外的非法进程的进程树和链接信息
- NIOP2012普及组-文化之旅