随笔分类 - 数据结构——线段树
摘要:Problem - 1601B - Codeforces 题意: 井下深度为n,在井下深度为i的地方可以往上跳[0,ai]米 如果没有跳出井,则要下滑bi米 问最少跳几次可以跳出井 假设跳[1,d]可以出井的位置都求出来了 现在求跳d+1次可以出井的位置 枚举跳d次可以出井的位置v,若从位置u可以滑
阅读全文
摘要:Problem - 487B - Codeforces 题意: 一个n个数的数组,要求把他们划分为最少的连续段,满足: 1、每段长度至少为l 2、每段的最大值-最小值不超过s dp[i]表示前i个数最少要划分为多少段 枚举j(j<=i-l),若[j+1,i]的最大值-最小值不超过s,那么dp[i]=
阅读全文
摘要:Problem - 1555E - Codeforces 题意: n条线段,每条线段有权值,m个点,如果存在一条线段同时覆盖了点a和点b,那么就可以从点a到点b 选一些线段,要求可以通过选出的线段从点1到达点m 问选出的线段的最小差值 题意相当于问选出一些线段,这些线段覆盖了所有的点 我们先把所有的
阅读全文
摘要:题意: 二维平面上有n个矩形,画两条平行于x周的直线,最多可以和多少个矩形相交。 n<=100000,坐标<=1e7 这两条直线一定可以和某两个矩形的上边界重合 枚举每一个矩形的上边界作为第一条直线 第二条直线可以借助线段树解决 具体方法是 先将所有矩形按上边界从小到大排序 枚举每个矩形,依次加入线
阅读全文
摘要:https://ac.nowcoder.com/acm/contest/5672/C 题意 给出一颗n个点的树,初始点权为0,执行m次操作 1 x w:给点x的点权加w,其余所有点点权加w-dis(i,x) 2 x:将点x的点权和0取min 3 x:查询x的点权 解法一:树链剖分+线段树 对于操作1
阅读全文
摘要:https://ac.nowcoder.com/acm/contest/3005/I 又做麻烦了,悲催。。。 将所有星星按x坐标为第一关键字,z为第二关键字排好序 那么一个z=1的星星匹配的是x比它小的,y比他小但又尽可能大的星星 用线段树维护所有的y坐标 如果z=0,直接把y坐标插入线段树 如果z
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=3255 将种子的价值看做高度,即转化成若干个长方体的体积并 枚举z轴,扫描线 #include<cstdio> #include<iostream> #include<algorithm> using namesp
阅读全文
摘要:http://www.51nod.com/Challenge/Problem.html#problemId=1559 倘若矩形是受保护的,那么矩形内每一行至少有一个车或者每一列至少有一个车 判断矩形内每一列都有一个车: 线段树中维护x坐标这一列车的最大y坐标 那么扫描线扫过矩形的上边界时 如果矩形左
阅读全文
摘要:http://hihocoder.com/problemset/problem/1381 一个结论:集合A的直径为a--b,集合B的直径为c--d,那么集合A∪B的直径必是以下6种之一: a--b c--d a--c a--d b--c b--d 断掉一条边,相当于从树的dfs序上取出一段区间 用线
阅读全文
摘要:题目链接:http://codevs.cn/problem/3342/ 题解: 最小化最大值:二分 二分最长空题段 令f[i]表示抄第i道题所花费的最小时间 状态转移方程:f[i]=min(f[j])+time[i] max(0,i-mid-1)<=j<=i-1 #include<cstdio> #
阅读全文
摘要:题目链接:http://poj.org/problem?id=1177 N<=5000个矩形 坐标范围[-10000,10000] ,均为整数 求矩形并的周长 对横着的和竖着的分别求一次暴力算法:对于每一条横边从左到右扫一遍,如果是矩形的下边,先判断当前坐标覆盖数为0,ans+,然后当前坐标覆盖数+
阅读全文
摘要:扫描线求矩形并 扫描线是一根假想的线,按照一个特定方向扫过一个二维平面,在扫描过程中完成相关信息的计算 矩形并的面积=Σ 一条线覆盖的矩形长度*这条线的宽度 线的宽度呢? 倘若线太细,当线在最下面蓝色区域扫时,它所覆盖的矩形长度不变 倘若线太粗,一条线覆盖的矩形宽度不一致,不能直接相加 所以扫描线在
阅读全文
摘要:题目链接: https://www.luogu.org/problemnew/show/P2572 题解: 覆盖标记会对取反标记有什么影响? 取反标记作废 取反标记会对覆盖标记有什么影响? 若有覆盖标记,将覆盖标记取反,不打取反标记 若无覆盖标记,打上取反标记 所以一个节点只可能同时拥有一种标记,不
阅读全文
摘要:题目链接:https://www.luogu.org/problemnew/show/P4198 题解: 能用线段树解的关键:从第一个位置开始的LIS 所以说左子区间一定有效,只考虑如何将右子区间与左子区间衔接 线段树维护从节点区间左端点开始的LIS 3种情况: 1、右子区间全都能衔接——右子区间的
阅读全文
摘要:题目链接:https://www.luogu.org/problemnew/show/P2894 题意: 酒店n个房间,m个操作:入住或退房 如果操作为入住,同一批客人安排的房间号必须连续 操作1:有x个客人要入住,输出满足条件的最小的房间编号,若不满足条件输出0 操作2:房间为[x,y]的客人要退
阅读全文
摘要:题目链接:http://codevs.cn/problem/3981/ 题解: 线段树求GSS模板题 一、一段长的区间的 GSS 有三种情况:>1 完全在左子区间>2 完全在右子区间>3 横跨左右区间 二、需维护的信息: mx 区间GSS ——用来更新情况1、2 lmx 区间最大前缀——用来更新情况
阅读全文
摘要:https://www.lydsy.com/JudgeOnline/problem.php?id=5249 把树建出来 如果所有的d互不相同,后续遍历即可 现在有的d相同 将d从小到大排序,考虑如何将这n个数填进树里 相当与为x的子树预订d序列中的一段 而且当且这个d填的位置越靠后越好 CTSC试机
阅读全文
摘要:https://www.lydsy.com/JudgeOnline/problem.php?id=2865 同上一篇博客 就是卡卡空间,数组改成map #include<map> #include<cstdio> #include<cstring> #include<algorithm> #defi
阅读全文
摘要:https://www.lydsy.com/JudgeOnline/problem.php?id=1396 后缀自动机的parent树上,如果不是叶子节点,那么至少有两个子节点 而一个状态所代表子串的出现次数就是子树中叶子节点的个数 所以只有叶子节点 即 |Right|=1的状态 代表的子串 出现了
阅读全文
摘要:https://www.lydsy.com/JudgeOnline/problem.php?id=5017 暴力: 对于每一个炸弹,枚举所有的炸弹,看它爆炸能不能引爆那个炸弹 如果能,由这个炸弹向引爆的炸弹连单向边 tarjan所点后拓扑排序 在拓扑图上倒着统计答案 可以得到一个炸弹能引爆的编号最小
阅读全文