随笔分类 - 基础算法 -- 动态规划
摘要:【BZOJ5211】[ZJOI2018]线图(树哈希,动态规划) 题面 "BZOJ" "洛谷" 题解 吉老师的题目是真的神仙啊。 去年去现场这题似乎骗了$20$分就滚粗了? 首先$k=2$直接算$k=1$时的边数就好了。$k=3$同理。 这里直接计算每个点的度数就可以做,然后就有$20$分了。 我们
阅读全文
摘要:【UOJ 246】套路(动态规划) 题面 "UOJ" 题解 假如答案的选择的区间长度很小,我们可以做一个暴力$dp$计算$s(l,r)$,即$s(l,r)=min(s(l+1,r),s(l,r 1),abs(a_r a_l))$。 我们发现$s(l,r)\le \frac{m}{r l+1}$,那么
阅读全文
摘要:【BZOJ4008】[HNOI2015]亚瑟王(动态规划) 题面 "BZOJ" "洛谷" 题解 设$f[i][j]$表示前$i$张卡中有$j$张被触发的概率。 分两种情况转移,即当前这张是否被触发。 不被触发的概率是$\displaystyle (1 p[i])^{r j}$,即一共会考虑$r j$
阅读全文
摘要:【BZOJ5416】【NOI2018】冒泡排序(动态规划) 题面 "BZOJ" "洛谷" "UOJ" 题解 考场推出了就是两个上升子序列,并且最长下降子序列长度不超过$2$。。。然后大力暴力状压$dp$混了$44$分。。。这个结论并不是很难证明,考虑一下冒泡排序的过程就好了。 实际上$O(n^2)$
阅读全文
摘要:【BZOJ4832】抵制克苏恩(矩阵快速幂,动态规划) 题面 "BZOJ" 题解 "一模一样"
阅读全文
摘要:【UOJ 340】【清华集训2017】小 Y 和恐怖的奴隶主(矩阵快速幂,动态规划) 题面 "UOJ" "洛谷" 题解 考虑如何暴力$dp$。 设$f[i][a][b][c]$表示当前到了第$i$次攻击,还剩下的$1,2,3$血的奴隶主个数为$a,b,c$的概率,每次考虑打到了哪里,做一个转移。 这
阅读全文
摘要:【BZOJ3925】[ZJOI2015]地震后的幻想乡(动态规划) 题面 "BZOJ" "洛谷" 题解 题目里面有一句提示:对于$n$个$[0,1]$之间的随机变量$x1,x2,...,xn$,第$k$小的那个的期望值是$k/(n+1)$。 显然要求的东西就是一棵最小生成树最大边的期望。而求解最小生
阅读全文
摘要:【Luogu4707】重返现世(min max容斥) 题面 "洛谷" 求全集的$k max$的期望 题解 $min max$容斥的证明不难,只需要把所有元素排序之后考虑组合数的贡献,容斥系数先设出来后也不难解出。 那么我们来考虑如何求解$k max$,设出容斥系数$f(|T|)$ $$kmax(S)
阅读全文
摘要:【UOJ 422】【集训队作业2018】小Z的礼物(min max容斥,轮廓线dp) 题面 "UOJ" 题解 ~~毒瘤xzy,怎么能搬这种题当做WC模拟题QwQ~~ 一开始开错题了,根本就不会做。 后来发现是每次任意覆盖相邻的两个,那么很明显就可以套$min max$容斥。 要求的就是$max(Al
阅读全文
摘要:【APIO2018】铁人两项(圆方树,动态规划) 题面 "UOJ" "洛谷" "BZOJ" 题解 ~~嘤嘤嘤,APIO的时候把一个组合数写成阶乘了,然后这题的70多分没拿到~~ 首先一棵树是很容易做的,随意指定起点终点就只能在两点路径上选择第三点。那么考虑过中点的路径个数,就可以很方便的$dp$计算
阅读全文
摘要:【LOJ 6074】子序列(动态规划) 题面 "LOJ" 题解 考虑一个暴力$dp$。 设$f[i][c]$表示当前在第$i$位,并且以$c$结尾的子序列个数。 那么假设当前位为$a$,强制把$a$接在所有出现过的子序列后面,再加上一个单独的$a$。 也就是$f[i][a]=\sum_j f[i 1
阅读全文
摘要:【CTSC2018】暴力写挂(边分治,虚树) 题面 "UOJ" "BZOJ" "洛谷" 题解 发现第二棵树上的$LCA$的深度这玩意没法搞,那么枚举在第二棵树上的$LCA$。 然后剩下的部分就是$dep[x]+dep[y] dep[lca]$ 这个玩意乱搞一下,就是$\frac{1}{2}(dep[
阅读全文
摘要:【WC2018】通道(边分治,虚树,动态规划) 题面 "UOJ" "洛谷" 题解 既然是三棵树,那么显然就是找点什么东西来套个三层。 一棵树怎么做?入门dp。 两棵树?假设在第一棵树中的深度为$dep$。在第一棵树中枚举$LCA$,因为两点之间距离可以转化为两点深度和减去两倍$LCA$的深度,而已知
阅读全文
摘要:【WC2018】州区划分(FWT,动态规划) 题面 "UOJ" "洛谷" 题解 首先有一个暴力做法(就有$50$分了) 先$O(2^nn^2)$预处理出每个子集是否合法,然后设$f[S]$表示当前的答案,每次枚举一个子集进行转移,得到方程:$\displaystyle f[S]=(\frac{1}{
阅读全文
摘要:【BZOJ3193】[JLOI2013]地形生成(动态规划) 题面 "BZOJ" "洛谷" 题解 第一问不难,首先按照山的高度从大往小排序,这样子只需要抉择前面有几座山就好了。然而有高度相同的山。其实也不麻烦,把高度相同的山按照关键数字排序,这样子即使是高度相同的山,也可以变成多出位置可以放进来,只
阅读全文
摘要:【Luogu4931】情侣?给我烧了! 加强版(组合计数) 题面 "洛谷" 题解 "戳这里" 忽然发现我自己推的方法是做这题的,也许后面写的那个才是做原题的QwQ。 cpp include include using namespace std; define MAX 5000010 define
阅读全文
摘要:【Luogu4921】情侣?给我烧了!(组合计数) 题面 "洛谷" 题解 很有意思的一道题目。 直接容斥?怎么样都要一个平方复杂度了。 既然是恰好$k$对,那么我们直接来做: 首先枚举$k$对人出来$\displaystyle {n\choose k}$,然后枚$k$排座位出来$\displayst
阅读全文
摘要:【ARC102E】Stop. Otherwise...(容斥原理,动态规划) 题面 "AtCoder" 有$n$个骰子,每个骰子有$K$个面,上面有$1$到$K$。骰子都是一样的。 现在对于$[2,2k]$中的每一个数$x$,要求出满足不存在任意两个骰子的点数和为$x$的方案数。 题解 显然这个东西
阅读全文
摘要:【CF715E】Complete the Permutations(容斥,第一类斯特林数) 题面 "CF" "洛谷" 给定两个排列$p,q$,但是其中有些位置未知,用$0$表示。 现在让你补全两个排列,定义两个排列$p,q$之间的距离为每次选择$p$中两个元素交换,使其变成$q$的最小次数。 求距离
阅读全文
摘要:【BZOJ2159】Crash的文明世界(第二类斯特林数,动态规划) 题面 "BZOJ" "洛谷" 题解 看到$k$次方的式子就可以往二项式的展开上面考,但是显然这样子的复杂度会有一个$O(k^2)$,因此需要换别的方法。 注意到自然指数幂和第二林斯特林数之间的关系: $$n^k=\sum_{i=0
阅读全文