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