http://acm.hdu.edu.cn/showproblem.php?pid=4970
好像还没有用树状数组写过区间更新,但是树状数组的确比线段树快很多,不知道跟ZKW线段树比效率怎么样:
先贴个模板:
#include
const int MAXN = 1024;
int B[MAXN], C[MAXN];
#define LOWBIT(x) ((x)&(-(x)))
voi...
分类:
其他好文 时间:
2014-08-22 23:53:03
阅读次数:
525
http://acm.hdu.edu.cn/showproblem.php?pid=4973
有两种操作
D l r 将【l,r】区间翻倍
Q l r询问[l,r]中相同数字出现的最多次数
比赛的时候脑子太乱了,没有想到怎么做。发现每次翻倍序列的长度都在变化,区间对应的数也在变,没有思路。
但是静下心来想一想,思路还是挺清晰的。
无论怎么翻倍,序列中的数都是连续的,范围...
分类:
其他好文 时间:
2014-08-22 23:52:49
阅读次数:
500
Color the ballTime Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 9502 Accepted Submission(s): 487...
分类:
其他好文 时间:
2014-08-22 22:27:29
阅读次数:
225
所有的“雨点”最后都可以分解成梯形(三角形就是其中一个底为0),然后lazy标记设置成梯形的上底和下底就好。数目很大,当然要离散化,注意处理点和点之间线段的关系,而且向下更新还有下放标记的时候要注意更新的过程中标记是有可能会变的。#include #include #include #include...
分类:
其他好文 时间:
2014-08-22 22:22:29
阅读次数:
364
hdu 4950 Monster
题意好简单,队友说要用线段树做,要不然会TLE,连树状数组也会T。我说让我试试树状数组,结果搞了一个
小时左右用树状数组给搞出来了,嘿嘿。用了树状数组区间更新。
#include
#include
#include
#include
#define maxn 100010
using namespace std;
...
分类:
其他好文 时间:
2014-08-22 21:12:10
阅读次数:
277
题意:
背景真是令人感动,我都看得哭了......
前面的自己看吧。
给出星星的坐标和亮度,给定一个矩形(长/宽),求框住的星星亮度和的最大值,恰好在边上的不算。
分析:
一个月前在上海邀请赛就有这样的题,当时我线段树只会成段更新,所以那道题目也没碰...
我们这样想,每个星星能影响的范围就是给定矩形的面积,为方便起见,不妨设星星的位置为矩形的左下角。
那么在这个范围内的点全部加上它的亮度,最终我们就是求该平面内的最大值。
这样的话就要用到二维线段树...可是有10k颗星星...这要开多大的数组啊........
保存5棵线段树,分别表示当前区间内的各个位置取5模的和。核心操作就是这个pushup,我们主要关心怎么样通过两个子区间的信息来推出父区间即可。感觉做了这题之后对线段树的理解又深了一些。#include #include #include #include #include #include #inc...
分类:
其他好文 时间:
2014-08-22 19:43:39
阅读次数:
223
/1.题目(theme) StarsTime Limit: 1000MSMemory Limit: 65536KTotal Submissions: 32652Accepted: 14263DescriptionAstrono...
分类:
其他好文 时间:
2014-08-22 19:35:29
阅读次数:
146
POJ 2182 Lost Cows(牛排序,线段树)...
分类:
其他好文 时间:
2014-08-22 17:58:39
阅读次数:
213
思路:比赛的时候看到这题感觉是线段树或者树状数组,但是因为要区间加倍,然后不知所措了,想了好久也不知道怎么把那个加倍的数怎么处理,然后就一直想第一道题了就没管这题了。虽然之前也做过这种类型的树状数组,不过这题确实是比较机智,把树状数组用得是非常爽。
sum[i]是树状数组的前缀和,cnt[i]表示第i个数共有多少个数。
更新加倍过程:我们让(l,r)这个区间加倍的时候,二分树状数组找到l所对应...
分类:
其他好文 时间:
2014-08-22 17:51:09
阅读次数:
203