bzoj1452[JSOI2009]Count 题意: n*m矩阵,支持两个操作,修改某个格子权值和查询某个子矩阵特定权值出现次数。n,m≤300,权值为1到100的整数。 题解: 原来二维前缀和也可以用树状数组维护,只要那个不断增加/减少lowbit的循环再嵌套一层就行了。同时因为权值是1到100 ...
分类:
Web程序 时间:
2016-07-20 21:10:21
阅读次数:
281
树状数组 维护一个序列 a1 a2 a3……an 支持两种操作: 1. sum(int a,int b) a~b的区间和 2. add(int x,int d) 第x个数增加d 设lowbit(x)为x的二进制最右边的1表示的值 如lowbit(38288)=lowbit(1001010110010 ...
分类:
编程语言 时间:
2016-06-02 23:24:34
阅读次数:
198
2维bit。每个颜色建一个。 #include #include #include using namespace std; const int maxn = 300+10; struct Bit2D { int a[maxn][maxn],n,m; inline int lowbit(int x)... ...
分类:
Web程序 时间:
2016-04-26 00:13:13
阅读次数:
271
题目大意是在能够改变两个数的位置的情况下计算逆序对数 这因为是动态记录逆序对 本来单纯逆序对只要用树状数组计算即可,但这里因为更新,所以利用TReap树的删点和增加点来进行更新 大致是把每个树状数组所管理的点都放在对应的Treap树下, 这样x-=lowbit(x)下来,正好访问到是所有比他小范围下 ...
分类:
编程语言 时间:
2016-04-08 21:21:24
阅读次数:
311
第一次写博好激动o(≧v≦)o~~初一狗语无伦次还请多多指教 先了解树状数组http://blog.csdn.net/int64ago/article/details/7429868感觉这个前辈写的很好 但是里面提到的lowbit则是一笔带过,那么lowbit究竟是个什么鬼呢??? 首先明白一个概念 ...
分类:
编程语言 时间:
2016-04-08 19:47:37
阅读次数:
1309
#define lowbit(x) ((x)&(-x)) 也可以写成如下形式: int Lowbit(x) { return x&(-x); } 例如: 1> x = 1: 十进制转二进制(设位数为8): 1 => 0000 0001 -1=> 1111 1111(此处为1的补码) 1&(-1)的二
分类:
其他好文 时间:
2016-03-18 17:22:34
阅读次数:
524
还是百度百科 http://baike.baidu.com/view/1420784.htm 一个简单的图理解一下 简单的说。。一个数组 c[] c[k]表示从 a[k-lowbit(k)+1]++++++c[k]所有的和,一般用于一段长度的连加 直接给代码啦 #include <iostream>
分类:
编程语言 时间:
2016-02-07 02:22:10
阅读次数:
231
int lowbit(int x){ return x&(x^(x–1)); } int lowbit(int x){ return x&-x; }
分类:
其他好文 时间:
2016-02-05 19:13:37
阅读次数:
144
struct Binary_Index_tree { long long a[N]; void init() { memset(a,0,sizeof(a)); } //位运算 int lowbit(int x) { return x & (-x); } //修改x这个点,并把所有包含x点的所有点都进
分类:
编程语言 时间:
2016-01-28 13:45:57
阅读次数:
133
HDU Aragorn's Story题目链接树抛入门裸题,这题是区间改动单点查询,于是套树状数组就OK了代码:#include #include #include #include using namespace std;const int N = 50005;inline int lowbit(...
分类:
其他好文 时间:
2016-01-24 19:34:21
阅读次数:
165