杂题泛做

杂题堆

建了篇文章记录一下自己这段时间见过的好题。
权当写题解了。


CF601C Kleofáš and the n-thlon

这是一道概率 DP 的好题。
首先题目让我们求排名的期望。
转化一下,就是求总分小于他的人数的期望,转化成求概率。
考虑设状态 \(dp[i][j]\) 表示考虑了前 \(i\) 场比赛后总分为 \(j\) 的概率。
易得转移方程为:

\[dp[i][j]=\dfrac{\sum_{k=1}^mdp[i-1][j-k]\cdot(k\ne c_i)}{m-1} \]

观察方程,发现可以前缀和优化。
最后答案即为

\[1+\sum_{i=n}^{Sum_c}dp[n][i]\cdot(m-1) \]


矩阵问题

给定一个矩阵 \(A\) 的第一行与第一列,规定除第一行与第一列外,有

\[A[i][j] = A[i][j-1]\cdot a+A[i-1][j]\cdot b+c \]

给定 \(a,b,c,n\),求 \(A[n][n]\) 的值(\(n\le10^6\))。

我们可以想到这个题应该需要颓式子了。
既然给定了第一行第一列,考虑先计算它们对 \(A[n][n]\) 的贡献

\[\sum_{i=2}^nA[i][1]\cdot C_{n-2+n-i}^{n-2}\cdot a^{n-2}b^{n-i}+\sum_{i=2}^nA[1][i]\cdot C_{n-2+n-i}^{n-2}\cdot a^{n-i}b^{n-2} \]

这个部分可以 \(O(n)\) 解决,那么第一行与第一列的值对中间格子的影响就已经被我们提前计算完了,只要考虑中间格子的影响。
我们可以单独考虑每个格子的贡献:

\[\sum_{i=2}^n\sum_{j=2}^nc\cdot C_{n-i+n-j}^{n-i}\cdot a^{n-j}b^{n-i} \]

\(c\) 拿出来,方便计算:

\[\sum_{i=2}^n\sum_{j=2}^nC_{n-i+n-j}^{n-i}\cdot a^{n-j}b^{n-i} \]

考虑更改枚举量,处理 \(C_{n-i+n-j}^{n-i}\)

\[\sum_{s=4}^{2n}\sum_{i=min(2,s-n)}^{max(s-2,n)}C_{2n-s}^{n-i}\cdot a^{n-i}b^{n-s+i} \]

我们希望可以通过递推来解决内部的式子,设

\[f_s=\sum_{i=min(2,s-n)}^{max(s-2,n)}C_{2n-s}^{n-i}\cdot a^{n-i}b^{n-s+i} \]

考虑它与 \(f_{s-1}\) 的关系,我们发现:

\[f_{s-1}=\sum_{i=min(2,s-n-1)}^{max(s-3,n)}C_{2n-s+1}^{n-i}\cdot a^{n-i}b^{n-s+i+1} \]

我们希望用 \(f_s\) 凑出来 \(f_{s-1}\) ,观察发现:

\[f_{s-1}=(a+b)\cdot f_s \]

最后处理一下求和范围变化导致的多余的或者漏掉的组合数。
那么我们就可以愉快的 \(O(n)\) 递推了,这部分的和为:

\[c\cdot \sum_{s=4}^{2n}f_s \]

于是答案即为两部分和,复杂度 \(O(n)\)


CF855C Helga Hufflepuff's Cup

一道树形 DP 的好题,算是一类问题的总结。
仔细思考可以发现,每个节点事实上只有 \(3\) 种不同的状态:

  1. \(k\) 这种特殊颜色。
  2. 不是 \(k\) 且编号比 \(k\) 小的颜色。
  3. 不是 \(k\) 且编号比 \(k\) 大的颜色。

然后,我们就可以设状态 \(dp_{x,j,0/1/2}\) 表示在以 \(x\) 为根的子树中有 \(j\) 个节点为特殊颜色,且 \(x\) 节点为状态 \(1/2/3\) 的节点时的方案数。
于是,我们就可以利用树上背包的思想来通过本题了,总复杂度为 \(O(3nx^2)\)


CF868F Yet Another Minimization Problem

一道决策单调性的好题,可以总结出一种常见的决策单调性优化 DP 的方式。
\(dp_{i,j}\) 为第 \(i\) 段以 \(j\) 结尾的最小费用和,设 \(p_{i,j}\) 表示 \(dp_{i,j}\) 的最优决策点为 \(p_{i,j}\),不难证明有:

\[p_{i,j}\ge p_{i,j-1} \]

满足决策单调性,考虑据此优化。
进一步地,我们得到转移方程 \(dp_{i,j}=dp_{i-1,k}+w(k+1,j)\),然而 \(w(i,j)\) 比较难以直接求出,但是从 \(w(i\pm1,j\pm1)\) 可以 \(O(1)\) 计算到 \(w(i,j)\),只需如莫队般维护一个 cnt 数组。
因此,考虑使用分治法来优化这个 DP,时间复杂度 \(O(nK\log_2n)\)


CF1415F Cakes for Clones

posted @ 2021-01-03 17:04  Tuifei_oier  阅读(94)  评论(0编辑  收藏  举报