
Binary indexed tree
文章平均质量分 76
X-Wyatt
For free 邮箱whitezhangv5@gmail.com
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HDU 1394
第一次提交的代码果断TLE了,代码如下 #include #include #include using namespace std; #define LEN 5005 int in[LEN], tree[LEN]; int lowbit(int x) { return x & (-x); } void update(int x) { while(x <= LEN)原创 2012-09-15 23:12:28 · 433 阅读 · 0 评论 -
LA 4329
树状数组,前后统计比当前位置的大小的个数,然后累乘,再相加 #include #include #include using namespace std; #define LLEN 100004 int num[LLEN]; int a[LLEN]; int lowbit(int x) { return x & (-x); } void update(int pos) { w原创 2013-12-20 21:41:43 · 1060 阅读 · 0 评论 -
HDU 1541
树状数组的应用,只是利用的它向后更新,向前查询的性质。 #include #include #define LEN 150001 int tree[LEN]; int level[LEN]; int lowbit(int x) { return x & (-x); } void update(int pos) { while(pos <= LEN) {原创 2012-09-14 23:20:59 · 483 阅读 · 0 评论 -
HDU 1166
单点更新,求区间 #include #include #define LEN 50001 int a[LEN]; int c[LEN]; int lowbit(int x) { return x & (-x); } void update(int pos, int val) { while(pos <= LEN) { c[pos] += val;原创 2012-09-14 21:56:12 · 450 阅读 · 0 评论 -
HDU 1556
区间更新,求点值 #include #include int tree[1000001]; int n; inline int Lowbit(int x) { return x & (-x); } inline void Update(int pos, int val) { while (pos <= n) { tree[pos] += va原创 2012-09-14 22:40:11 · 430 阅读 · 0 评论 -
HDU 2642
和前一个二维树状数组基本一样,果断1A #include #include #include using namespace std; #define LEN 1002 int tree[LEN+2][LEN+2]; int flag[LEN][LEN]; int lowbit(int x) { return x & (-x); } void update(int x,原创 2012-09-15 15:12:11 · 647 阅读 · 0 评论 -
HDU 2689
求逆序对个数,其实就和之前写的那个题差不多,很简单,直接贴代码了。 PS:树状数组可以用来求有大小关系的区间 #include #include #include using namespace std; #define LEN 1001 int tree[LEN+1], in[LEN+1]; int ans[LEN+1]; int lowbit(int x) { re原创 2012-09-15 21:23:47 · 567 阅读 · 0 评论 -
HDU 1892
二维树状数组,和一维的基本差不多,只需要把update和query函数扩展为二维就行了 #include #include #include using namespace std; #define LEN 1002 #define MIN(a,b) (a<b?a:b) int tree[LEN+1][LEN+1]; int lowbit(int x) { return原创 2012-09-15 14:11:30 · 863 阅读 · 0 评论 -
HDU 2492
挺巧的一道题,笨的办法就是暴力搜索,但是用树状数组可以很巧妙的解决。 这题实质上就是每次 update 更新 val+1,然后求每段区间的长度。 #include #include #include using namespace std; #define LEN 100002 int tree[LEN+2]; int in[LEN+2]; int lmin[LEN+2],原创 2012-09-15 20:44:01 · 527 阅读 · 0 评论 -
POJ 1195
二维树状数组,比较简单 #include #include #include using namespace std; const int llen = 1124; int tree[llen][llen]; int len; void init() { for(int i = 0; i <= len; i++) { for(int j = 0; j <= len; j++)原创 2013-12-21 10:55:27 · 633 阅读 · 0 评论