线段树
FuTaimeng
好像有人说我冰雪聪明~~~
展开
-
Rmq Problem
Rmq Problem主席树 or 线段树 3339: Rmq Problem题解:一、主席树:我们考虑建权值线段树,每个数字 x 保存它最后出现的位置这样查询[l,r],就是找第r棵主席树中第一个值 < l 的主席树上每个区间维护当前数中,权值从 l 到 r 中最后一次出现最靠左的位置就是相当于维护区间最小值即可Code:#include <iostream>#include <cstdi原创 2017-07-31 11:33:51 · 257 阅读 · 0 评论 -
POJ3145: Harmony Forever
POJ3145: Harmony Forever线段树·乱搞题解:http://blog.csdn.net/sdj222555/article/details/7383593Code:#include <iostream>#include <cstring>#include <cstdio>#define MP make_pair#define D(x) cout<<#x<<" = "<<x原创 2017-09-03 12:00:11 · 295 阅读 · 0 评论 -
BZOJ1018: [SHOI2008]堵塞的交通traffic
BZOJ1018: [SHOI2008]堵塞的交通traffic线段树 的 奇妙世界题解:直接%PoPoQQQ:http://blog.csdn.net/popoqqq/article/details/44116729Code:#include <iostream>#include <cstring>#include <cstdio>//#define D(x) cout<<#x<<" = "原创 2017-09-02 23:52:39 · 229 阅读 · 0 评论 -
Machine Works UVALive - 5133
Machine Works UVALive - 5133超哥线段树优化Dp题解:裸方程很好想:fi=max{fj+Gj∗(Di−Dj−1}−Pi+Rif_i=\max\{f_j+G_j*(D_i-D_j-1\}-P_i+R_i当前面的max小于Pi的时候fi=−inff_i=-\inf.时间复杂度:O(n2)O(n^2).其实就是维护一次函数的最大值。直接超哥线段树即可。正解好像是单调队列 ?Cod原创 2017-09-07 19:35:42 · 334 阅读 · 0 评论 -
BZOJ1568: [JSOI2008]Blue Mary开公司
BZOJ1568: [JSOI2008]Blue Mary开公司超哥线段树题解:超哥线段树裸题。一张著名的图: 就是每个节点保存一个一次函数y,当插入新函数yy的时候,如果yy在整个区间都比y优,则替换成yy,反之保留y。当在区间中有交点的时候,哪个在终点位置的值好保留哪个,另一个往下推,推到交点所在的区间。查询的时候一路取max即可。Code:#include <iostream>#inclu原创 2017-09-06 14:43:08 · 355 阅读 · 0 评论 -
BZOJ3252: 攻略
BZOJ3252: 攻略贪心·线段树 http://blog.csdn.net/mys_c_k/article/details/66474976题目大意:给定一棵以1为根的n个点的树,树有点权且点权为正整数,可以选择k条以根作为起点的路径,每条路径的价值即这条路径上所有点的点权之和。 但是选择一条路径之后,这条路径上的所有点的点权会变成0。(也就是说,这k条路径中被重复选择的点,其点权只能被原创 2017-08-23 13:42:47 · 494 阅读 · 0 评论 -
BZOJ3747: [POI2015]Kinoman
BZOJ3747: [POI2015]Kinoman线段树题解: http://hzwer.com/5715.html线段树经典题 nxt[i]记录第i天的电影下次播放时间 枚举区间左端点,线段树维护每个位置作为右端点的答案 考虑l-r的左端点变为l+1 发现l到nxt[l]-1的答案减少w[f[l]] 而nxt[l]到nxt[nxt[l]]-1增加w[f[l]] 线段树维护,支持原创 2017-08-24 22:03:38 · 412 阅读 · 0 评论 -
BZOJ4184: shallot
BZOJ4184: shallot线性基·线段树题解:又是一道神题! 然而蒟蒻只能抄题解,还抄漏了一句。。。一个数字的出现时间是一段区间[l,r][l,r],可以开一棵线段树,把[l,r][l,r]对应的线段树节点上的vector里加上这个数。 最后dfs一次,参数传一个线性基(不是引用),把当前点vector里的都加进去,再往下dfs。 这样到达叶节点的线性基就包含了这个点时存在的数,输出一原创 2017-08-24 18:16:56 · 410 阅读 · 0 评论 -
BZOJ4276: [ONTAK2015]Bajtman i Okrągły Robin
BZOJ4276: [ONTAK2015]Bajtman i Okrągły Robin费用流·线段树优化建图题解:有一个用费用流的显然做法,可惜边是O(n2)O(n^2)级别的。 这时就要用到线段树优化建图啦! 一个强盗的区间拆成log个线段树上的区间,向对应的线段树节点连边,线段树上的非叶子向儿子连边,叶子向T连容量为1的边,最后S向每个强盗连边,容量1,费用w[i].Code:#inclu原创 2017-08-19 08:48:10 · 306 阅读 · 0 评论 -
BZOJ4631: 踩气球
BZOJ4631: 踩气球线段树 的 奇幻世界题解:在dalao fqk的模拟赛里我自己想出来的! 撒花 撒花线段树维护气球,把一个孩子拆成若干个线段树上的区间,并放在对应线段树节点的vector里,并且记录num[i]num[i]孩子i被拆成了几个区间。 每当一个区间变成0时,就把它vector里的孩子的num[ch[i]]−−num[ch[i]]--,如果num[ch[i]]==0num[c原创 2017-08-18 22:22:14 · 507 阅读 · 0 评论 -
BZOJ2124: 等差子序列
BZOJ2124: 等差子序列线段树维护HASH题解:我们只需要找到长度为3的等差数列:a b c 依次加入b,枚举公差k,判断b−kb-k和b+kb+k是否是一个出现过而另一个没有,如果答案是肯定的,那么说明找到了一个。 (因为是一个排列,没出现过的那个一定会在后面出现) 然后这个暴力交上去AC了,不要问我为什么 优化一下这个O(n2)O(n^2)做法,可以用线段树维护0/10/1序列(是原创 2017-08-18 21:55:49 · 356 阅读 · 0 评论 -
BZOJ1537: [POI2005]Aut-The Bus
BZOJ1537: [POI2005]Aut- The Bus线段树优化DP题解:把点从左往右从低到高排序,易得: f[i]=maxf[j]+p[i](j<i,yj<yi)f[i]=\max f[j]+p[i](j<i,y_j<y_i) 这样把y坐标开成线段树,扫到一个点先查询后加入就行了。Code://我忘了放哪了QWQ//真的不是懒得没写啊原创 2017-08-17 11:48:56 · 265 阅读 · 0 评论 -
楼房重建
楼房重建线段树 bzoj2957题解:Code:#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N = 100005;struct Node{ int l,r,mid; int ans; double maxk;}t[N*4];void build(i原创 2017-07-31 21:08:57 · 234 阅读 · 0 评论 -
Sum of Medians
Sum of Medians线段树 CodeForces 85D题解:先把数据离散化,为每个出现的数字在线段树里预留好位置。 线段树节点维护当前区间里有几个数字cnt,以及mod5分类的和sum[1] sum[2] … sum[5] 合并的时候左区间的sum对应加,右区间的根据lch.cnt来一个偏移然后再加。 注意,有一组数据长这样:1sum开不开心,哈哈哈…Code:#includ原创 2017-07-31 20:37:58 · 287 阅读 · 0 评论 -
[HAOI2012]高速公路(road)
[HAOI2012]高速公路(road)线段树 bzoj2752题解:Code:#include <iostream>#include <cstring>#include <cstdio>#define D(x) cout<<#x<<" = "<<x<<" "#define E cout<<endlusing namespace std;typedef long long LL;原创 2017-07-31 15:27:26 · 397 阅读 · 0 评论 -
[USACO13JAN]座位Seating
[USACO13JAN]座位Seating线段树题解:线段树维护区最长全0区间。 支持区间修改为一个值。查询的时候,先看看左区间是否有满足要求的,有就往左走; 否则看看跨越左区间和右区间的那段是否满足要求,满足就选它; 否则往右走。(在一开始就特判操作失败的情况后,则此时右边一定有)一定别漏了pushdown!Code:#include <iostream>#include <cstring原创 2017-10-04 22:48:24 · 818 阅读 · 0 评论