随笔分类 - dp
摘要:浅谈李超线段树实现斜率优化dp 李超线段树 先来看一道例题: [HEOI2013]Segment 要求在平面直角坐标系下维护两个操作: 在平面上加入一条线段 \((x_1,y_1)\rightarrow (x_2,y_2)\)。记第 \(i\) 条被插入的线段的标号为 \(i\)。 给定一个数 \(
阅读全文
摘要:[NOI2019] 回家路线 题解 第一次这么深入理解斜率优化的习题。 题意 现在有 \(n\) 个城市,城市之间有 \(m\) 条火车可以到达。 第i条火车是从第 \(x_i\) 出发并到达 \(y_i\),是在 \(p_i\) 时间出发,并在 \(q_i\) 时间到达。 火车只能够在前一辆到达后
阅读全文
摘要:出题方案 现在小泽的手上有 \(n\) 道难题,编号分别为 \(1\sim n\) ,第 \(i\) 道题的难度系数是 \(a_i\) 。 小泽想用这些题出比赛,他会把题目按照编号划分为若干个非空连续区间,每个区间对应了一场比赛。 特别的,如果某场比赛的题目难度系数之和超过了给定的常数 \(m\)
阅读全文
摘要:写博客 小泽发了一篇博客,由 \(n\) 个小写英文字母组成,由于包含违禁词,被自动隐藏。 具体地,违禁词有 \(m\) 个,分别为 \(T_1,T_2,\dots,T_m\) 。 小泽发现,只要博客中,连续地包含了其中违禁词,那么博客就会被自动隐藏。换言之,对于任意 \(1\leq i\leq m
阅读全文
摘要:粉刷木板 有 \(N\) 块木板从左到右排成一行,有 \(m\) 个工匠对这些木板进行粉刷,每块木板至多被粉刷一次。 第 \(i\) 个木匠要么不粉刷,要么粉刷包含木板 \(S_i\) 且长度不超过 \(L_i\) 的连续的一段木板,每粉刷一块可以得到 \(P_i\) 的报酬。不同工匠的 \(S_i
阅读全文
摘要:图的计数 ⼀个 DAG ,这个 DAG 有 \(m\) 层,第⼀层只有⼀个源点,最后⼀层只有⼀个汇点,剩下的每⼀层都有 \(k\) 个节点。每次可以取反第 \(i\) 层和第 \(i+1\) 层之间的连边。也就是把原本从 \((i,k_1)\) 连到 \((i+1,k_2)\) 的边,变成从 \((
阅读全文
摘要:擦除序列 给你一个由字母构成的字符串 \(S\) 。每一步都要擦除其中一个子序列,但要求被擦除的子序列必须是一个回文词。求擦除整个字符串的最少步数。 比如,将 \(\texttt{abcba}\) 从 \(\texttt{abyczbea}\) 擦除,就是合理的一步。 \(n\leq16\). 题解
阅读全文
摘要:最优组队 \(n\le 16\) 题解 看到数据范围,肯定是状压 DP . 很快有一个思路:对于每个状态,枚举其子集,进行求 Max. 有如下代码: #include <bits/stdc++.h> #define fo(a) freopen(a".in","r",stdin),freopen(a"
阅读全文
摘要:权值统计 给出一个 \(n\) 个结点的无根树以及每个结点的权值,求出树的每一条路径的权值积的和,单独的一个结点也算作一条路径。 解析 要求每一条路径。 规定每条路径的权值为途径的点权之积。 对于这类问题,我们可以用 \(dp_u\) 表示以 \(u\) 为根的子树内所有答案。 但是,因为题目规定,
阅读全文
摘要:魔法数字 还是很麻烦的一道题…… 题解 先证明一个结论: 若 \(p=\operatorname{lcm}(p_1,p_2,\cdots,p_n)\) ,则有$\forall x\in \N ,i\in[1,n], (x\operatorname{mod} p)\operatorname{mod}
阅读全文
摘要:题意 给定一棵 \(n\) 个节点的树,每个点有个喜欢程度。求 选联通块,并且这个联通块包含最大的点权的方案数。 分析 很难想的一道题…… 原本思路:将权值最大的点设为根,跑一遍树形dp即可。 但是考虑到,权值最大的点可能不止一个,于是此做法失效。 考虑设$dp_u$表示在$u$的子树内,必定选取点
阅读全文
摘要:原题链接:P5336 [THUSC2016]成绩单 在机房大佬的帮助下终于写出了这题。再一看题解区,没有类似做法,故蒟蒻来分享一下。 题意 给定序列$W_{1\cdots n}$与常数$A$、\(B\),每次从中选取连续的一段,定义每一段代价为$V_k= A+B\times(x_{\max}-x_{
阅读全文
摘要:题目链接:F. 3.攻击法坛 题意 数轴上有$n$个给定的点,$p$个长为$L$和$q$个长为$2L$的线段,求出$L$的最小值使得所有点被线段覆盖。 解析 很考验思维的一道题. 发现**$L$的可行性有单调性**,于是考虑二分$L$。 在check中: 设$f1[i]$表示,在当前$L$下,从第$
阅读全文
摘要:题意 设A和B是两个字符串。我们要用最少的字符操作次数,将字符串A转换为字符串B。这里所说的字符操作共有三种: 删除一个字符; 插入一个字符; 将一个字符改为另一个字符; 数据范围:\(len(a),len(b)\le 2000\) 解析 有:$dp[i][j]$表示字符串A选取前$i$项,字符串B
阅读全文
摘要:前言 一次简单的dp考试,但是由于审题错误 和 复杂度计算问题导致卡分…… 详见下 1.打包 挺简单的一个01背包,就不详细写了。 2.暗黑破坏神 题面 思路 可以把每个药水转化成分组背包,但是重点就是对于无后效性的dp,如何记录前面的状态。 本来思路是先正常跑dp,将最大价值和最小花费求出,后用d
阅读全文
摘要:题意 在一个地图上有$N$个地窖$(N \le 200)$,每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径。当地窖及其连接的数据给出之后,某人可以从任一处开始挖地雷,然后可以沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使某人能挖到最多的地雷。
阅读全文
摘要:最长上升子序列长度+输出答案序列 题意 设有$n$个不相同的整数组成的序列$a[1\cdots n]$,且$a[i]!=aj$,若存在$i_1<i_2<\cdots i_e$,且有$a[i_1]<a[i_2]<\cdots <a[i_e]$,称为长度为$e$的上升序列。 求出最长上升序列的长度及这个
阅读全文

浙公网安备 33010602011771号