随笔分类 - 基础算法 -- 动态规划
摘要:【POJ2411】Mondriaan's Dream(轮廓线DP) 题面 "Vjudge" 题解 这题我会大力状压!!! 时间复杂度大概是$O(2^{2n}n^2)$,设$f[i][S]$表示当前第$i$行向下伸展出去的状态为$S$ 那么每次枚举一下当前行的放法,进行转移就好了。 然后就长成了这个样
阅读全文
摘要:【CF248E】Piglet's Birthday(动态规划) 题面 "洛谷" "CodeForces" 翻译: 给定$n$个货架,初始时每个上面有$a[i]$个蜜罐。 有$q$次操作,每次操作形如$u,v,k$,表示从货架$u$上任意选择$k$个蜜罐试吃(吃过的也还能吃),吃完后把这$k$个蜜罐放
阅读全文
摘要:【BZOJ2655】Calc(多项式插值,动态规划) 题面 "BZOJ" 题解 考虑如何$dp$ 设$f[i][j]$表示选择了$i$个数并且值域在$[1,j]$的答案。 $f[i][j]=f[i 1][j 1] i j+f[i][j 1]$ 即不考虑选择$j$,以及当前选择$j$,那么枚举是哪个数
阅读全文
摘要:【CF995F】Cowmpany Cowmpensation(多项式插值) 题面 "洛谷" "CF" 题解 我们假装结果是一个关于$D$的$n$次多项式, 那么,先$dp$暴力求解颜色数为$0..n$的所有方案数 这是一个$O(n^2)$的$dp$ 然后直接做多项式插值就好了, "公式戳这里" cp
阅读全文
摘要:【HDU4689】Derangement(动态规划) 题面 "Vjudge" 给定一个$+ $组成的字符串,长度为$n$。 如果第$i$位是$+$,那么$p_i i$,否则$p_i include define ll long long ll f[22][22]; char ch[22]; int
阅读全文
摘要:【BZOJ4455】小星星(动态规划,容斥) 题面 "BZOJ" "洛谷" "Uoj" 题解 题意说简单点就是给定一张$n$个点的图和一棵$n$个点的树,现在要让图和树之间的点一一对应,并且如果树上存在一条边,那么图上对应的点对之间也要存在边。 我们直接求解显然很麻烦,一一对应是一个很不好算的东西。
阅读全文
摘要:【BZOJ3162】独钓寒江雪(树哈希,动态规划) 题面 "BZOJ" 题解 忽然翻到这道题目,突然发现就是前几天一道考试题目。。。 题解: 树哈希,既然只考虑这一棵树,那么,如果两个点为根是同构的, 他们的重心相同,所以直接找出树的重心,以重心为根进行转移 提前预处理每一棵子树的哈希值,因为相同的
阅读全文
摘要:【BZOJ1226】学校食堂(动态规划,状态压缩) 题面 "BZOJ" "洛谷" 题解 发现$b$很小,意味着当前这个人最坏情况下也只有后面的一小部分人在他前面拿到饭。 所以整个结果的大致顺序是不会变化的。 对于一个人,他要占用的时间之和前面那个拿饭的人有关。 而他前面那个拿饭的人在队列中只有两种情
阅读全文
摘要:【BZOJ2216】Lightning Conductor(动态规划) 题面 "BZOJ,然而是权限题" "洛谷" 题解 $\sqrt {|i j|}$似乎没什么意义,只需要从前往后做一次再从后往前做一次就好了。 只考虑从前往后,把给定的式子移项,可以得到 $p\ge a[j] a[i]+\sqrt
阅读全文
摘要:【BZOJ4709】柠檬(动态规划,单调栈) 题面 "BZOJ" 题解 从左取和从右取没有区别,本质上就是要分段。 设$f[i]$表示前$i$个位置的最大值。 那么相当于我们枚举一个前面的位置$j$,然后找到这一段中最大的$s_0t^2$ 但是这样子很不优秀。 我们贪心的思考一下,既然这一段最后加起
阅读全文
摘要:【BZOJ3203】保护出题人(动态规划,斜率优化) 题面 "BZOJ" "洛谷" 题解 在最优情况下,肯定是存在某只僵尸在到达重点的那一瞬间将其打死 我们现在知道了每只僵尸到达终点的时间,因为僵尸要依次打死。 所以我们假设血量的前缀和是$s_i$ 那么我么必须在它到达的时间$t_i$之前打出总共不
阅读全文
摘要:【BZOJ3437】小P的牧场(动态规划,斜率优化) 题面 "BZOJ" 题解 考虑暴力$dp$,设$f[i]$表示强制在$i$处建立控制站的并控制$[1..i]$的最小代价。 很显然,枚举上一个控制站的位置$j$ $f[i]=min(f[j]+Calc(i,j)+a[i])$,其中$Calc(i,
阅读全文
摘要:【BZOJ3156】防御准备(动态规划,斜率优化) 题面 "BZOJ" 题解 从右往左好烦啊,直接$reverse$一下再看题。 设$f[i]$表示第$i$个位置强制建立检查站时,前面都满足条件的最小代价 $f[i]=min(f[j]+sum[i j 1])+A[i]$ 即枚举上一个检查站建立的位置
阅读全文
摘要:【BZOJ2727】双十字(动态规划,树状数组) 题面 "BZOJ" "洛谷" 题解 我们去年暑假的时候考试考过。 我当时写了个大暴力混了$70$分。。。。 大暴力是这么写的: 预处理每个位置向左右/上/下能够拓展的最多的长度(左右相当于分别求然后取$min$) 接着枚举双十字的中轴线,所在的列 然
阅读全文
摘要:【BZOJ4361】isn(动态规划,容斥) 题面 "BZOJ" 题解 首先我们如果确定了一个不降序列,假设它的长度为$i$, 那么可行的方案数为$i (n i)!$,但是这样有一些非法的情况,即删掉最后一个数之前已经是有序的了。 那么设$g[i]$表示长度为$i$的不降序列的总数 因为所有长度为$
阅读全文
摘要:【BZOJ1068】压缩(动态规划) 题面 "BZOJ" "洛谷" 题解 比较简单的$dp$ 设$f[i][j]$表示当前已经匹配到了原串的第$i$个位置,上一个$M$在第$j$个字符之后的方案数。 每次从当前$f[i][j]$位置转移出去,转移只有两种。 一种是直接匹配一位,也就是$f[i][j]
阅读全文
摘要:【BZOJ4654】【NOI2016】国王饮水记(动态规划,斜率优化) 题面 "BZOJ" "洛谷" 题解 首先肯定是找性质。 明确一点, 比$h_1$小的没有任何意义 。 所以我们按照$h$排序,那么$h_1$就是当前$1$号位置的水量。 假设我们使用的次数不受到任何限制,我们思考怎么样才是最优。
阅读全文
摘要:【BZOJ4200】【NOI2015】小园丁与老司机(动态规划,网络流) 题面 "BZOJ权限题,洛谷链接" 题解 一道二合一的题目 考虑第一问。 先考虑如何计算六个方向上的第一个点。 左右上很好考虑,只需要按照$x$或者$y$轴排序就行了。 对于$45$度的斜角,两点一定在同一条直线上。 这条直线
阅读全文
摘要:【BZOJ4197】【NOI2015】寿司晚宴(动态规划) 题面 "BZOJ" 从$[2,n]$中选择两个集合(可以为空集),使得两个集合中各选一个数出来,都互质。 求方案数。 题解 对于$500$以内的所有数,它的最大质因子如果大于$\sqrt n$,那么便只有一个。 利用这一点,我们把所有数全部
阅读全文
摘要:【BZOJ5333】荣誉称号(动态规划) 题面 "BZOJ" "洛谷" 题解 今天早上贱狗老师讲的。然而我还是不会。 只好照着$zsy$代码大力理解一波。 首先观察等式,如果比较熟悉线段树,会发现就是线段树的前$k$个祖先 而线段树是完全二叉树,也就所有东西形成了一个完全二叉树。 并且任意节点和它的
阅读全文