
Binary indexed tree
文章平均质量分 76
X-Wyatt
For free 邮箱whitezhangv5@gmail.com
展开
-
HDU 1394
第一次提交的代码果断TLE了,代码如下#include #include #include using namespace std;#define LEN 5005int in[LEN], tree[LEN];int lowbit(int x) { return x & (-x);}void update(int x) { while(x <= LEN)原创 2012-09-15 23:12:28 · 422 阅读 · 0 评论 -
LA 4329
树状数组,前后统计比当前位置的大小的个数,然后累乘,再相加#include #include #include using namespace std;#define LLEN 100004int num[LLEN];int a[LLEN];int lowbit(int x) { return x & (-x);}void update(int pos) { w原创 2013-12-20 21:41:43 · 1044 阅读 · 0 评论 -
HDU 1541
树状数组的应用,只是利用的它向后更新,向前查询的性质。#include #include #define LEN 150001int 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 · 461 阅读 · 0 评论 -
HDU 1166
单点更新,求区间#include #include #define LEN 50001int 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 · 440 阅读 · 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 · 419 阅读 · 0 评论 -
HDU 2642
和前一个二维树状数组基本一样,果断1A#include #include #include using namespace std;#define LEN 1002int 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 · 635 阅读 · 0 评论 -
HDU 2689
求逆序对个数,其实就和之前写的那个题差不多,很简单,直接贴代码了。PS:树状数组可以用来求有大小关系的区间#include #include #include using namespace std;#define LEN 1001int tree[LEN+1], in[LEN+1];int ans[LEN+1];int lowbit(int x) { re原创 2012-09-15 21:23:47 · 555 阅读 · 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 · 838 阅读 · 0 评论 -
HDU 2492
挺巧的一道题,笨的办法就是暴力搜索,但是用树状数组可以很巧妙的解决。这题实质上就是每次 update 更新 val+1,然后求每段区间的长度。#include #include #include using namespace std;#define LEN 100002int tree[LEN+2];int in[LEN+2];int lmin[LEN+2],原创 2012-09-15 20:44:01 · 515 阅读 · 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 · 619 阅读 · 0 评论