
树状数组
拉风的啤酒肚
菜鸟一枚若发表的文章有所错误望各位大神提出意见
展开
-
POJ2155--Matrix(二维树状数组)
对于翻转,我们可以直接+1,取其结果%2即可。 #include #include #include #include #include #include #include #include #include #define INF 999999999 #define M 1005 #define LL long long #define Min(a,b) a<b?a:b #d原创 2014-01-21 14:15:33 · 585 阅读 · 0 评论 -
POJ2029--Get Many Persimmon Trees(枚举+二维树状数组)
暴力枚举起点,然后就是裸的二维树状数组。 #include #include #include #include #include #include #include #include #include #define INF 999999999 #define M 105 #define LL long long #define Min(a,b) a<b?a:b #defin原创 2014-01-21 15:25:06 · 935 阅读 · 0 评论 -
POJ1195--Mobile phones(树状数组)
二维树状数组,改下可直接套模版,注意点就是坐标中有0的情况,所以只要x和y都加上1即可。 #include #include #include #include #include #define M 1500 #define LL long long using namespace std; int op,s; int c[M][M]; int Lowbit(int x) { r原创 2014-01-16 20:24:24 · 767 阅读 · 0 评论 -
二维树状数组模版
int Lowbit(int x) { return x & (-x); } void Update(int x,int y,int d) { int i,j; for(i=x;i<=s;i+=Lowbit(i)) { for(j=y;j<=s;j+=Lowbit(j)) { c[i][j]+=d; } } } LL Sum(int x,int y) { int原创 2014-01-16 20:25:36 · 627 阅读 · 0 评论 -
树状数组
http://www.cppblog.com/Ylemzy/articles/98322.html 这里面讲的应该是比较清楚了。转载 2014-01-16 14:14:03 · 479 阅读 · 0 评论 -
树状数组求逆序数
给你一组数据,让你求它的逆序数,我们可以先将这么数从小到大排序,然后一个一个插入到树状数组中去,c[i]表示第i个数前面有多少个数比它小,它的逆序就是i-Sum(a[i])。 代码如下: #include #include #include #include #include #define M 500005 #define LL long long using namespace原创 2014-01-16 16:01:58 · 867 阅读 · 0 评论 -
POJ3067--Japan(树状数组)
题意就是让你求交点有多少个。 我们可以先按a从小到大排序,a相等就按b从小到大排序,这样题意就变成了让我们求b数组的逆序数了。 代码如下: #include #include #include #include #include #define M 1005 #define LL long long using namespace std; int n,m,k; int c[M]原创 2014-01-17 16:11:08 · 914 阅读 · 0 评论