随笔分类 - 基础算法 -- 动态规划
摘要:【agc013d】Piling Up(动态规划) 题面 "atcoder" "洛谷" 有$n$个球,颜色为黑白中的一种,初始时颜色任意。 进行$m$次操作,每次操作都是先拿出一个求,再放进黑白各一个,再拿出一个球。 求最终拿出球的序列的方案数。 题解 首先可以把操作看成每次拿出一个球把它染上任意一种
阅读全文
摘要:【arc071f】Infinite Sequence(动态规划) 题面 "atcoder" "洛谷" 题解 不难发现如果两个不为$1$的数连在一起,那么后面所有数都必须相等。 设$f[i]$表示$[i,n]$的填法数,初值$f[n]=n,f[n 1]=n n$ 考虑转移, 首先可以这里填上一个大于$
阅读全文
摘要:【BZOJ5337】[TJOI2018]str(动态规划,哈希) 题面 "BZOJ" "洛谷" 题解 就很呆。。。 显然按层$dp$,如果能够匹配上就进行转移,直接哈希判断是否能够匹配就好了。。。 cpp include include include using namespace std; de
阅读全文
摘要:【BZOJ5336】[TJOI2018]party(动态规划) 题面 "BZOJ" "洛谷" 题解 这题好神仙啊。。。 考虑普通的$LCS$的$dp$,$f[i][j]=\max\{f[i 1][j],f[i][j 1],f[i 1][j 1]+(A_i==B_j)\}$ 发现对于固定的$i$而言,
阅读全文
摘要:【BZOJ5471】[FJOI2018]邮递员问题(动态规划) 题面 "BZOJ" "洛谷" 给定平面上若干个点,保证这些点在两条平行线上,给定起点终点,求从起点出发,遍历所有点后到达终点的最短路径长度。 题解 不会做,于是点开LOJ,点开除了$std$之外 "唯一过的人的代码" ,照着打了一遍Qw
阅读全文
摘要:【BZOJ5469】[FJOI2018]领导集团问题(动态规划,线段树合并) 题面 "BZOJ" "洛谷" 题解 题目就是让你在树上找一个最大的点集,使得两个点如果存在祖先关系,那么就要满足祖先的权值要小于等于儿子的权值。 首先离散权值。 考虑一个暴力$dp$,设$f[i][j]$表示以$i$为根,
阅读全文
摘要:【BZOJ5324】[JXOI2018]守卫(动态规划) 题面 "BZOJ" "洛谷" 题解 既然只能看到横坐标在左侧的点,那么对于任意一个区间$[l,r]$而言,$r$必须被选。 假设$r$看不到若干个区间,其中一个区间是$[x,y]$,因为$y+1$能够被看到,所以$[y+2,r]$这一段一定看
阅读全文
摘要:【BZOJ5318】[JSOI2018]扫地机器人(动态规划) 题面 "BZOJ" "洛谷" 题解 神仙题。不会。。。。 先考虑如果一个点走向了其下方的点,那么其右侧的点因为要被访问到,所以必定只能从其右上方的点走过来。同理,如果这个点向右,那么其下方的点就只能从其左下方的点向右走过来。 因此我们可
阅读全文
摘要:【BZOJ5314】[JSOI2018]潜入行动(动态规划) 题面 "BZOJ" "洛谷" 题解 不难想到一个沙雕$dp$,设$f[i][j][0/1][0/1]$表示当前点$i$,子树中一共放了$j$个,这个点是否放了,这个是否被覆盖了。 看起来直接合并是$O(nk^2)$的QwQ。。。。。 然后
阅读全文
摘要:【BZOJ5315】[JSOI2018]防御网络(动态规划,仙人掌) 题面 "BZOJ" "洛谷" 题解 显然图是仙人掌。 题目给了斯坦纳树就肯定不是斯坦纳树了,,,, 总不可能真让你$2^n$枚举点集再来一个至少$2^n n$的斯坦纳树吧。。。 现在对于每一条边考虑贡献。 如果这条边是不在环内,那
阅读全文
摘要:【BZOJ5302】[HAOI2018]奇怪的背包(动态规划,容斥原理) 题面 "BZOJ" "洛谷" 题解 ~~为啥泥萌做法和我都不一样啊~~ 一个重量为$V_i$的物品,可以放出所有$gcd(V_i,P)$的重量,而多个物品也只要$gcd$就好了。 现在的问题转变成了有多少个集合$S$,满足$S
阅读全文
摘要:【BZOJ5298】[CQOI2018]交错序列(动态规划,矩阵快速幂) 题面 "BZOJ" "洛谷" 题解 考虑由$x$个$1$和$y$个$0$组成的合法串的个数。 显然就是把$1$当做隔板插入进去,那么有$y+1$个位置可以放$1$,所以方案数就是${y+1\choose x}$。 而$x^ay
阅读全文
摘要:【BZOJ4784】[ZJOI2017]仙人掌(Tarjan,动态规划) 题面 "BZOJ" "洛谷" 题解 显然如果原图不是仙人掌就无解。 如果原图是仙人掌,显然就是把环上的边给去掉,变成若干森林连边成为仙人掌的方案数。 那么对于一棵树而言,考虑其变成仙人掌的方案数。 设$a_i$表示匹配$i$个
阅读全文
摘要:【CF1097E】Egor and an RPG game(动态规划,贪心) 题面 "洛谷" "CodeForces" 给定一个长度为$n$的排列$a$,定义$f(n)$为将一个任意一个长度为$n$的排列划分成最少的上升和下降子序列的个数的最大值。现在你要把这个排列$a$划分成不超过$f(S)$个上
阅读全文
摘要:【THUWC2017】随机二分图(动态规划) 题面 "BZOJ" "洛谷" 题解 如果每天边的限制都是$0.5$的概率出现或者不出现的话,可以把边按照二分图左侧的点的编号排序,然后设$f[i][S]$表示左边的前$i$个点中,匹配了右侧的点集$S$的方案数。每次枚举一条边进行转移。为了防止在点集中重
阅读全文
摘要:【BZOJ2576】[JSOI2011]序的计数 (动态规划) 题面 "BZOJ" 题解 首先构建一个新的虚拟节点连接所有目标节点,强行将其作为第一个被访问的节点,这样子就解决了图不连通的问题。 除了目标节点外,所有其他点都可以缩成一个节点。 这样子的图实际上只有$k+2$个节点,$k+1$个目标节
阅读全文
摘要:【BZOJ3215/3216】[ZJOI2013]话旧/话旧2(组合数学,动态规划) 题面 "BZOJ3215" "BZOJ3216" 题解 先解决$3216$,求的是 最小值 为$0$。 因为起点就是$0$,所以就是在过程中不会到$0$以下。 那么两个相邻位置的合法走法可以转化成网格图上从$(0,
阅读全文
摘要:【UOJ 311】【UNR 2】积劳成疾(动态规划) "UOJ" Solution 考虑最大值分治解决问题。每次枚举最大值所在的位置,强制不能跨过最大值,左右此时不会影响,可以分开考虑。 那么设$f[i][j]$表示长度为$i$,且最大值不超过$j$的所有方案之和。 因为最大值有多个,所以我们钦定每
阅读全文
摘要:【BZOJ5287】[HNOI2018]毒瘤(动态规划,容斥) 题面 "BZOJ" "洛谷" 题解 考场上想到的暴力做法是容斥: 因为$m n\le 10$,所以最多会多出来$11$条非树边。 如果就是一棵树的话,显然答案就是独立集的个数。 非树边$2^{11}$枚举,强制非树边的两端同时备选导致不
阅读全文
摘要:【BZOJ5250】[九省联考2018]秘密袭击(动态规划) 题面 "BZOJ" "洛谷" 给定一棵树,求其所有联通块的权值第$k$大的和。 题解 整个$O(nk(n k))$的暴力剪剪枝就给过了。。。 cpp include include include using namespace std;
阅读全文