1018: [SHOI2008]堵塞的交通traffic 链接 分析: 用线段树维护区间的四个端点的联通情况,然后查询的时候,把所有覆盖到的区间合并起来即可。 六种情况左上到右上(左边到右边的情况)……,左上到左下(同一侧相互到达的情况)…… 同一侧相互到达的情况,查询[l,r]是查的不完全。因为还 ...
分类:
其他好文 时间:
2018-12-11 15:58:16
阅读次数:
166
树链上区间合并的问题比区间修改要复杂,因为每一条重链在线段树上分布一般都是不连续的,所以在进行链上操作时要手动将其合并起来,维护两个端点值 处理时的方向问题:lca->u是一个方向,lca->v是另一个方向,到最后合并这两个放向时都看左端点即可 ...
分类:
其他好文 时间:
2018-11-30 20:11:30
阅读次数:
246
题目大意: 给定n个点 每个点都有权值 接下来给定树的n条边 第 i 个数 a[i] 表示 i+1到a[i]之间 有一条边 给定q q个询问 每次询问给出 x y 求x到y的最长上升子序列的长度 题解 https://blog.csdn.net/forever_wjs/article/details ...
分类:
其他好文 时间:
2018-11-23 14:15:03
阅读次数:
191
学习了线段树的新姿势,记录一下 参考blog:https://blog.csdn.net/sunyutian1998/article/details/79618316 query的时候m-ql+1和qr-m写成了m-l+1、r-m,wa了几发之后才找到bug 错误样例: 10 1Q 5 wrong ...
分类:
其他好文 时间:
2018-11-19 14:39:37
阅读次数:
447
题目传送门 题目大意: 给出m个1-n的全排列,问这m个全排列中有几个公共子串。 思路: 首先单个的数字先计算到答案中,有n个。 然后考虑多个数字,如果有两个数字相邻,那么在m个串中必定都能找到这两个数字并且位置相邻。那么我们枚举1-n所有的数字,比如先枚举p1是1,那p2就是在全排列1中p1后面的 ...
分类:
其他好文 时间:
2018-11-12 17:50:19
阅读次数:
185
"P2894 [USACO08FEB]酒店Hotel" 简单的线段树维护区间信息。 维护三个值,一个是从左端点能拓展的长度,一个是从右端点能脱产的的长度。另一个是整个区间内的最大连续零一长度。 记录这三个值的目的在于可以使小区间合并大区间。 这样话就可以愉快的跑出答案了。 cpp include i ...
分类:
其他好文 时间:
2018-11-04 12:37:21
阅读次数:
218
题意:有n个依次编号的元素,要求维护以下两个操作: 1.询问整个数列中是否有长度>=x的连续的一段未被标记的元素,若无输出0,若有输出最小的开始编号ans并将[ans,ans+x-1]标记 2.将[x,x+y-1]其中的元素取消标记(如果有) n,m<=5e4 思路:线段树区间合并 记录从左、右边开 ...
分类:
其他好文 时间:
2018-10-27 16:08:56
阅读次数:
170
leetcode中有几道和数字区间合并有关的题,大致就是有交集的地方,把这几个有交集的区间合并起来。 思路如下: 先将所有区间按照开头进行排序,然后开始遍历,用目前已确定的区间的尾部 和 即将要判断的区间的头部 比较大小, 1)如果尾部>=头部,证明有交集,就去看这两个区间谁的尾部更大,取更大的尾部 ...
分类:
其他好文 时间:
2018-10-25 00:31:09
阅读次数:
179
题意:N堆石子,每次可以合并连续的长度从L到R的若干堆石子为1堆,费用为选择的石子总个数,求将N堆合并成1堆的最小总花费,无解输出0 思路:dp[i][j][k]表示将i到j这段区间合并为k堆的最小代价 \[ 初始条件 dp[i][j][j-i+1]=0 \] \[ dp[i][j][k]=min( ...
分类:
其他好文 时间:
2018-10-18 01:16:24
阅读次数:
207
链接;http://acm.hdu.edu.cn/showproblem.php?pid=3397 题意: 给你一串01串,有5种操作 0. 区间全部变为0 1.区间全部变为1 2.区间异或 3.询问区间1的个数 4.询问区间被最长连续1的长度 思路: 这5个操作都是比较基础的线段树操作,难点在于有 ...
分类:
其他好文 时间:
2018-10-13 02:20:56
阅读次数:
219