随笔分类 -  OJ-bzoj

摘要:题目链接 如果对于每个询问跑一次$dp$,那么$dp[i]$为断开$i$这棵子树的最小花费。 这样的复杂度为$O(n*m)$,过于臃肿。 所以我们要对于每次询问降低这次询问的复杂度。 我们可以发现$m$个关键点,最多有$m-1$个$lca$。 简单证明一下,如果有两个点,会有$1$个$lca$点,如 阅读全文
posted @ 2019-11-05 20:01 祈梦生 阅读(123) 评论(0) 推荐(0)
摘要:题目链接 算是一道比较明显的区间$dp$,但是状态不同往常。 $dp[0/1][i][j]$为拿完第$i$个和第$j$个范围内的所有球后停在左边/右边的最小亏损。 $dp[0][i][j] = min(dp[0][i][j], min(dp[0][i + 1][j] +亏损, dp[1][i + 1 阅读全文
posted @ 2019-11-05 18:39 祈梦生 阅读(151) 评论(0) 推荐(0)
摘要:题目链接 因为题目说可以分组,并且是求最值,所以斜率优化应该是可以搞的,现在要想怎么排序使得相邻的数在一个组中最优。 我们按照宽$w$从小到大,高$h$从小到大排序。这时发现可以筛掉一些一定没有贡献的土地,什么样的土地没有贡献呢?这样的:$h[i]<=h[j]\& \&w[i]<=w[j]$,此时i 阅读全文
posted @ 2019-09-21 17:58 祈梦生 阅读(184) 评论(0) 推荐(0)
摘要:题目链接 如果没有这个修改操作,那么就可以主席树/树状数组乱搞,可以没有如果QAQ。 所以选择莫队来乱搞这个修改操作。 阅读全文
posted @ 2019-09-19 18:10 祈梦生 阅读(157) 评论(0) 推荐(0)
摘要:题目链接 一道思路蛮清晰的题,题目有连边,删边,判断两点是否联通三个操作,因为题目中提到了“任意时刻任意两个洞穴之间至多只有一条路径”这一句话。所以在任意时刻,这些联通块都是树形的。所以不是很像splay森林LCT吗。 所以就是LCT板子了...... 阅读全文
posted @ 2019-09-19 17:30 祈梦生 阅读(134) 评论(0) 推荐(0)
摘要:题目链接 斜率优化的经典模型,将序列分成若干段,每段有一个权值计算方法,求权值和最大/小 暴力的dp $O(n^{2})$ dp[i]为1-i的序列的最优解。sum[i]为前缀和,$D(i)=ax^{2}+bx+c$ 转移为$dp[i]=\max_{j=0}^{i-1}dp[j]+D(sum[i]- 阅读全文
posted @ 2019-09-04 11:44 祈梦生 阅读(172) 评论(0) 推荐(0)
摘要:题目链接 这道题用来理解LCT还是蛮不错的,如果是笨重的LCT完全体就会在洛谷上卡常T掉第4组,但是这道题明显可以省略掉很多多余操作。 我们先看看如果按照正常的LCT,会有这样一些操作: makeroot为换根,Link为连边,split为连出棵splay:x-y并将y变为根。 在正常的LCT题目中 阅读全文
posted @ 2019-09-01 19:46 祈梦生 阅读(170) 评论(0) 推荐(0)
摘要:题目链接 思路清晰的发现题意是求最小路径覆盖。 最少路径覆盖:是指在一个有向图中,找出最少的几条路径,用它们来覆盖全图。 先闭包处理一下,然后二分图跑一下。 阅读全文
posted @ 2019-08-30 21:01 祈梦生 阅读(139) 评论(0) 推荐(0)
摘要:题目链接 IDA*的第一道题,移动棋子太麻烦啦,所以移动空格。 因为题目只求15步以内能否到达,所以枚举1-15为步数,然后每次A*的方式估价一下,f=g+h,h为当前状态到目标状态期望步数,g为已经走的步数,f如果超过当次枚举的步数就可以直接返回。 然后可以优化一下,不走回头路。 阅读全文
posted @ 2019-08-30 20:38 祈梦生 阅读(145) 评论(0) 推荐(0)
摘要:题目链接 题目就是赤裸裸的三维偏序,所以用CDQ+树状数组可以比较轻松的解决,但是还是树套树好想QAQ CDQ+树状数组 树套树(树状数组套线段树) 因为空间有限,线段树要动态开点且要写成链表QAQ。 阅读全文
posted @ 2019-08-30 20:00 祈梦生 阅读(198) 评论(0) 推荐(0)
摘要:题目链接 第一次做LCT的题目还有点小激动QAQ 如果将题目所给的关系简化,将弹飞看做是树的根节点,则整个序列就可以看做是一棵树。然后修改操作就是修改一个节点的父节点,查询操作就是查询一个节点的深度。 如果是修改操作,就是先断边再连边,如果是查询操作,就将x与根节点连在一颗splay中,然后查询这颗 阅读全文
posted @ 2019-08-26 20:13 祈梦生 阅读(142) 评论(0) 推荐(0)
摘要:题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2152 问题为求树上有多少个点对路径之和为3的倍数,将每条边对3取余,然后点分治。每次求该子树下到根节点边权和相加分别为0,1,2的子节点个数,分别记为O[0],O[1],O[2]。 则该子 阅读全文
posted @ 2019-08-21 20:25 祈梦生 阅读(137) 评论(0) 推荐(0)
摘要:题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2004 看了很多大佬的博客才理解了这道题,菜到安详QAQ 在不考虑优化的情况下,先推$dp$式子,设$dp[i][j]$为最慢的公交车走到了第$i$站,$[i,i+p-1]$站的状态为$j$ 阅读全文
posted @ 2019-07-11 13:13 祈梦生 阅读(184) 评论(0) 推荐(0)
摘要:题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3223 平衡树处理区间问题的入门题目,普通平衡树那道题在维护平衡树上是以每个数的值作为维护的标准,而处理区间问题时,维护平衡树的应该是每个位置的下标,所以平衡树中序遍历时应该是当前区间的样子 阅读全文
posted @ 2019-07-09 20:40 祈梦生 阅读(203) 评论(0) 推荐(0)
摘要:题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2243 线段树+树链剖分,在线段树需要每次用lt和rt两个数组记录当前区间的左右边界的颜色,向上更新时需要判断左区间的右边界是否和右区间的左边界相等。在剖分求LCA的过程中需要在求值之后查询 阅读全文
posted @ 2019-07-09 19:43 祈梦生 阅读(168) 评论(0) 推荐(0)
摘要:题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1047 题目虽然有一个n的限制,但求二维区间最值首先想到的还是RMQ,但是如果按照往常RMQ的写法,空间复杂度是O(n2*(log2(n)2)),而且需要两个求最大最小,所以会爆空间,大概也 阅读全文
posted @ 2019-07-07 20:43 祈梦生 阅读(206) 评论(0) 推荐(0)
摘要:题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1030 最最最常见的多串匹配问题!题目求至少包含一个子串的方案数,则可以转化成全部方案-不包含子串的方案数。 求不包含任何字串的方案数即以所有子串建AC自动机,然后跑dp,dp[i][j]表 阅读全文
posted @ 2019-07-04 20:02 祈梦生 阅读(142) 评论(0) 推荐(0)
摘要:题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2431 dp[i][j]表示有i个数的排列方式中逆序对有j个的方案数。 因为dp这样转移为$dp[i][j]=\sum_{t=j-i+1}^{j}(dp[i-1][t])$ 这样i,j,t三 阅读全文
posted @ 2019-07-04 09:16 祈梦生 阅读(143) 评论(0) 推荐(0)
摘要:题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1072 状压dp,dp[i][j]表示状态为i,对d取余为j的方案数,则有dp[i|(1<<k)][(j*10+a[k])%d]+=dp[i][j],其中k为不在状态i中的数。 同时,因为有 阅读全文
posted @ 2019-07-04 09:08 祈梦生 阅读(155) 评论(0) 推荐(0)
摘要:题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1195 多个字符串匹配问题用AC自动机没跑了,建好AC自动机后,由于要求答案要最短和字典序最小,则在AC自动机上状压bfs搜索,bfs保证搜到的串长度最短,然后每次从A-Z遍历,保证搜到的字 阅读全文
posted @ 2019-07-04 09:01 祈梦生 阅读(171) 评论(0) 推荐(0)