线段树
文章平均质量分 60
空灰冰魂
=NULL
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【POJ3237】Tree 树链剖分
题意: change,把第i条边权值改成v negate,把a到b路径上所有权值取相反数(*(-1)) query,询问a到b路径上所有权值的最大值 树链剖分。 以前一直不会,但是我恶补LCT了,所以先学一下。 对于现在的水平来说,树剖太水了,自己翻资料吧,我只提供一个还算不错的代码。 扒代码的时候可以用我的这个。 附rand和pai。 代码: #inc原创 2014-11-24 10:46:01 · 1186 阅读 · 0 评论 -
【BZOJ3064】【Tyvj1518】CPU监控 裸线段树
题解:显然是裸的线段树,连区间合并都没有,更别提可持久化了。。。 水得一比,但是也相当恶心。。 维护一下: 目前线段 最大值、覆盖值、增加值、 历史线段 最大值、覆盖值、增加值。 然后覆盖值是赋-inf还是再加个flag记录有没有随便了。 总之很恶心,昨天晚上调了好久好久都没调过。 对了,这种恶心的东西不妨分多个线段树维护。 o(︶︿︶)o原创 2015-01-29 14:42:30 · 3386 阅读 · 0 评论 -
【BZOJ1067】【POJ2637】WorstWeather Ever【SCOI2007】降雨量 线段树+恶心讨论
题意:自己去BZOJ上看。 但是总之询问就是要求 // 它的含义是X年的降雨量不超过Y年,且对于任意Y<Z<X,Z年的降雨量严格小于X年 // 左>=右>中 题解:然后首先离散化一下,然后把确定的年加到线段树中,乱搞一下就过了。 但是,,,讨论太恶心了!! 详情参照代码,写得很清晰(不清晰怎么A这道题) 代码: #include #include #include原创 2015-01-20 15:50:04 · 1811 阅读 · 0 评论 -
【USACO 2008 Nov Gold】 3.Light Switching(lites 开关灯) 区间修改线段树
题意: n、m,n个灯,m次操作 两种操作 0: 这段区间全部状态取反,初始全部为0 1: 询问这段区间有几个灯是亮的。 裸线段树,弱爆了。 #include #include #include #include #define N 101000 #define inf 0x3f3f3f3f using namespace std; struct Se原创 2015-01-02 12:52:33 · 2186 阅读 · 0 评论 -
【BZOJ1342】【Baltic2007】Sound静音问题 单调队列
题意: 虽然这道题是汉语的,但是我有必要说一下题意。 就是问你长度为m的区间中,有哪些区间的最大值-最小值 注意!!!如果没有方案输出NONE。 题解: 首先我们可以写一个multiset2400ms+,就是这样,然后貌似还可以写个线段树(不知道有没有人写) 但是正解显然是写两个O(n)的单调队列。 一个维护当前区间最大值,另一个维护最小值。 代码: #include原创 2015-01-21 18:16:36 · 1865 阅读 · 0 评论 -
【BZOJ3110】【Zjoi2013】K大数查询 树套树 权值线段树套区间线段树
题解: 外层权值线段树,内层区间线段树可解。 权值都是1~n,就不用离散化了。 我写了标记永久化。 其它心得神马的: 天生对树形数据结构无爱。 第一次写树套树,终于知道是怎么回事了。 (只针对本题) 就是外层每个点都表示了一段权值, 而它同时还是一颗线段树, 线段树里面记录了这段权值的出现区间、次数等等。 然后每次插入的时候 都是暴力地把该权值所在的原创 2015-01-22 15:14:08 · 2817 阅读 · 0 评论 -
【BZOJ3897】Power 线段树求前驱后缀
题解: 首先我们从大到小排个序,然后感性来讲,肯定是从大到小能取多少就取多少的。然后我们取一个点时,还不能取多了,不符题意或者影响到其它已经取了的点对吧。 所以我们求个前驱pre,后缀suc,就是最近的前面的取了的点,和后面的。 这个可以用线段树求,也可以set神马的快速水过啦啦啦。 然后此点既然是之前取的,肯定是能取多少尽量取多少啦,拿后缀举例,也就是你取当前点,然后等到后缀那个点,肯定原创 2015-03-25 15:51:03 · 1738 阅读 · 0 评论 -
【BZOJ3531】【Sdoi2014】旅行 树链剖分。
题解: 开10W棵线段树,然后节点动态加。 天哪!!CFree竟然吞了我一个’&’符号。 恶心死了找了正经好一会。 代码: #include #include #include #include #define N 101000 #define LOGN 20 #define ls s[note].l #define rs s[note].r #define inf 0x原创 2015-03-03 00:05:50 · 2002 阅读 · 0 评论 -
【BZOJ3878】【Ahoi2014】奇怪的计算器 维护区间性质。线段树
题解: 先排序然后插入线段树 用线段树每次对全区间进行操作。 然后维护哪些段区间溢出了,对这段区间进行赋值。 溢出处理: 一个区间的左端点大于最大值,或者右端点小于最小值 那么这个区间就该被覆盖。 覆盖,加特技: 乘0+x就是覆盖成x。 剪枝?: 一个区间右端点≤\leq最大值,或者左端点≥\geq最小值,那么return 代码: #include #in原创 2015-03-03 14:19:30 · 1728 阅读 · 0 评论 -
【BZOJ3888】【Usaco2015 Jan】Stampede 线段树判区间覆盖
广告:#include <stdio.h> int main() { puts("转载请注明出处[vmurder]谢谢"); puts("网址:blog.youkuaiyun.com/vmurder/article/details/44065939"); }题意:PoPoQQQPoPoQQQ站在原点上向y轴正半轴看,然后有一群羊驼从他眼前飞过。这些羊驼初始都在第二象限,尾巴在(Xi,Yi),头在原创 2015-03-04 21:24:17 · 1805 阅读 · 0 评论 -
【BZOJ1095】【ZJOI2007】Hide 捉迷藏 线段树维护括号序列 数据结构的压缩。
题解: 首先由于此题太神以至于我其实还不会这道题,所以不妨介绍一下括号序列维护树构。 其实都是假的,就是一个点被扫到入栈的时候,序列加一个左括号,然后加入一个字符(可以不加),点出栈的时候就加一个右括号。 然后两点间距离就是两点的在序列的位置中间那一堆括号里,删掉一些匹配的括号后的答案,比如 )(()()(()( ,最后就变成了 )(()(( ,表示左端点需要向上走一步,右端点需要向上走两步原创 2015-04-02 11:18:14 · 1790 阅读 · 0 评论 -
【BZOJ3922】Karin的弹幕 线段树&暴力
题解: 我们对每个等差数列维护一棵线段树。 比如等差为 55 , nn 为 1717 ,则线段树内节点顺序为: 1,6,11,16,2,7,12,17,3,8,13,4,9,14,5,10,15。1,6,11,16,2,7,12,17,3,8,13,4,9,14,5,10,15。 然后查询的时候到对应线段树内查询一段就好了。 然后等差太大 (>5)(>5) 就不用维护线段树了,数量不会太原创 2015-04-10 13:52:39 · 1546 阅读 · 0 评论 -
【BZOJ3932】【CQOI2015】任务查询系统 可持久化线段树
题解: 首先肯定要用线段树。 如果没有强制在线,那么直接把询问排个序然后按秩插入、删除、查询。普通线段树就好了,但是这道题强制在线,就需要可持久化线段树了。 线段树的每个区间记录[x:这段区间有的权值总和]、[n:这段区间有多少个权值][x:这段区间有的权值总和]、[n:这段区间有多少个权值] 然后每个版本表示一个时间点的线段树。 这道题每个版本可能有多个节点被修改,所以我们可以先当成多原创 2015-04-08 10:44:20 · 1778 阅读 · 0 评论
分享