动态规划专题
动态规划专题
冲刺 noip 800 分,41 秒切 T1234
-
A:Helping People
抽象题。
发现区间只有不交与包含,可以想到建树(其实不太可以。
因为期望 \(max\) 与 \(max\) 期望不是一个东西,又发现 \(q\) 十分小,所以直接设 \(dp_{i,j}\) 表示到节点 \(i\) 最大值增加了 \(\le j\) 的概率,\(q^2\) 转移即可。
-
B:Birds
智障题。
发现魔力很大但总鸟数很小,直接设 \(dp_{i,j}\) 表示到第 \(i\) 棵树抓了 \(j\) 只鸟的最大剩余魔力,直接转移就好了。
Vjudge 上图片挂了,没有 \(\sum c_i \le 10^4\)。。。
-
C:Positions in Permutations
二项式反演板子。
考虑求至少,设 \(dp_{i,j,1/0,1/0}\) 表示到第 \(i\) 位,钦定了 \(j\) 个,因为转移与 \(i+1,i-1\) 是否选了有关,所以压两位表示 \(i,i+1\) 是否选了。
考虑第 \(i\) 位是否钦定转移即可,最后乘上没钦定的全排在反演即可。
-
E:Bear and Cavalry
结论题。
先考虑没有限制,贪心排序即可。
有限制可以直接排序后 \(n^2\) 转移。
发现结论,最后的匹配一定可以变成一堆长度不超过三的块,两两之间没有联系。
于是有了 \(O(n)\) 转移,\(nq\) 卡常可过。
优秀的 OIer 不能只会暴力卡常。
发现转移可以矩阵维护,\(max\) 和 \(+\) 组成的矩阵也满足结合律,单次最多只会修改 9 个矩阵。
线段树维护单点改区间乘即可。
也可以分块,块内暴力改,块间枚举合并。
-
F:ZS Shuffles Cards
首先因为只能抽到 \(joker\) 才结束。
所以可以用 \(期望轮数\times 每轮期望次数\)。
期望轮数直接 \(dp\),设 \(dp_i\) 表示集合内有 \(i\) 个元素期望轮数,发现已经抽过的完全没意义,所以有 \(\frac{m}{m+i}\) 抽 \(joker\),轮数加一,有 \(\frac{i}{m+i}\) 抽新牌,元素数加一。
每轮期望次数可以递推,但考虑每张非 \(joker\) 放在 \(joker\) 前面的概率,期望其实就是 \(\frac{n}{m+1}+1\)
相乘即可。
-
G:Future Failure
虽然我没写,但丝毫不影响我胡考虑先手必胜的方案,容易发现当前状态重拍为偶数或长度为奇数时先手必胜,其他情况先手必败。
考虑计数,因为先手必胜太麻烦,考虑容斥,求先手必败。
对于 \(n\) 的重拍 \(\dfrac{n!}{\prod_{i} a_i!}\) 只有当:\(\sum a_i=n\) 且 \(\bigoplus a_i=n\),然后记忆化搜索即可。
搜索时可以钦定一个 \(a_i\) 单调递减,最后乘上非 \(0\) 的全排即可。
-
H:Tavas in Kansas
把那两个人叫 A 和 B。
先离散化。
考虑 \(n^2\) dp。
因为我们只关心分数大小,设 \(dp_{i,j,1/0}\) 表示当 A 选到距离为 \(i\),B 选到距离为 \(j\) 的分数差。
把每个点到 A 和 B 的距离作为坐标,整到二维平面上来,就会变成两条直线扫扫扫,每次贡献就是矩阵和。
因为有 sb 价值为 0 的点,所以要在开一个表示是否有点的二维平面。
最后因为不知道是谁结束,所以倒序转移。
-
I:Game on Sum (Easy Version)
先考虑设 \(dp_{i,j}\) 表示第 \(i\) 轮,第 \(j\) 次加。
有转移:
\[dp_{i,j}=\max\{\min(f_{i-1,j-1}+t,f_{i-1,j}-t)\} \]发现这就是两个一次函数,在 \(\frac{f_{i-1,j-1}+f_{i-1,j}}{2}\) 转移。
本文来自博客园,作者:xrlong,转载请注明原文链接:https://www.cnblogs.com/xrlong/articles/18109862