#include #include #include #include #include
#include #include #include #include #include #include using namespace std;int
a[222222];int ret[222222];c...
分类:
其他好文 时间:
2014-06-10 00:09:07
阅读次数:
177
本题使用树状数组果然更加快。
树状数组难点:
1 如何遍历树
2 如何利用数组数据
建立一个树状数组就如上图红色部分代表所有的树状数组节点了。
基本操作:
查找下一个节点的计算,如不明白下面函数的作用,请查看负数内存存放的问题。
简而言之就是:内存放是求反+1; 利用这个函数可以神奇地寻找到其单亲节点和兄弟节点,比如上图6->8,6->4或者7->8, 7 -> 6这样跳转节...
分类:
其他好文 时间:
2014-06-08 17:10:43
阅读次数:
181
ACM 树状数组 Stars hdu1541 poj2352...
分类:
其他好文 时间:
2014-06-08 16:52:38
阅读次数:
186
要询问一个数列的某区间的最大值,其中会更新数据。
这样的题目使用树状数组是可以的,但是因为要牵涉到区间操作,故此还是线段树比较好点。
不过使用树状数组也是可以的,就是查询的时候麻烦点,注意计算,不要超出区间了。
看下面的query函数,这是主要的难点函数,其中的-1操作和这个判断r - lowbit(r) >= l,都很蛋疼,一不小心就会出错。
#include
#inc...
分类:
其他好文 时间:
2014-06-08 09:02:49
阅读次数:
345
#include #include #include #include #include
#include #include #include #include #include #include using namespace std;int
c[222222];int n;int lowbit(...
分类:
其他好文 时间:
2014-06-07 20:24:57
阅读次数:
226
首先想到线段树,然后刚开始写忽然想到树状数组求和岂不是更快,而且编程复杂度又小,于是把之前写的删掉,写树状数组,写完模版之后忽然发现这题竟然是区间修改!于是又删掉重写,忽然发现不会处理又加又乘的,果断看题解……经过几乎两个小时的调试,终于1A。需要注意的是,一定要让线段树的每一个区间保存的值时刻为正...
分类:
其他好文 时间:
2014-06-07 17:04:11
阅读次数:
229
题目来源:POJ 2155 Matrix
题意:开始矩阵都是0 2种操作 把某个子矩阵翻转 0变1 1变0 查询x y 是0还是1
思路:树状数组 记录翻转次数就行 奇数次是1 偶数次是0
这题是区间更新 点查询 向上求和 向下更新 而且是二维的
#include
#include
using namespace std;
const int maxn = 1300;
i...
分类:
其他好文 时间:
2014-06-05 01:59:00
阅读次数:
287
以前用树状数组做过一次,现在用线段树再刷一次。。。
首先必须先离散化。。。
然后建立2颗线段树,第一颗表示往左走,每个节点的值的分布。
第二颗表示往右走,每个节点的值的分布。
然后根据左右走的关系,判断出x,y的值。
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include
#include
#inclu...
分类:
其他好文 时间:
2014-06-03 01:25:54
阅读次数:
315
由于智力的问题,百度之星完全lu不动。。开场看第一题根据题目给的条件我觉得一定是可以构造出来的,题目给的意思颇有鸽巢原理的感觉,于是觉得开场第一题应该就是智力构造题了,想了半个小时,发现完全想不动,于是只能放弃了去想后面的题。然后看第二题的数据结构,树上的询问,支持点修改,询问子树和,还有换根,然后...
分类:
其他好文 时间:
2014-06-02 16:41:08
阅读次数:
257