7.21 做题记录

P8321 『JROI-4』沈阳大街 2

直接考虑排列是困难的,我们把它视作一个匹配的形式。

\(A,B\) 顺序不影响答案,将它们排序后在值域上 dp。

\(f_{i,j}\) 为考虑 \(A,B\)\(i\) 大的值(设为 \(v\)),配对了 \(j\) 个的方案数,转移:\(f_{i,j} = f_{i-1,j-1} \times v \times (tmp - j - 1 ) + f_{i-1,j}\),其中 \(tmp\) 表示前 \(i\) 大的数中与 \(v\) 来自不同数组的数个数,时间复杂度 \(O(n^2)\)

总结:

  • 用匹配的形式描述一一对应
  • \(\min/\max\) 的贡献在值域上做

[ARC087F] Squirrel Migration

考虑答案的上界,设删去一条边后两边的大小为 \(S_1,S_2\),则这条边的贡献 \(\leq 2 \times \min S\),根据经典结论,我们取重心为根,则每个匹配的两个点都在不同子树中。

现在要求方案数,考虑容斥,设 \(f_i\) 为有 \(i\) 个匹配在同一子树的方案数,则:

\[ans = \sum_{i=0}^n (-1)^i \times f_i \times (n - i)! \]

求解 \(f\) 是容易的,设子树的大小为 \(x\),其中有 \(k\) 个点满足 \(i\)\(p_i\) 在同一子树中,那么其方案数为 \(\binom{x}{k}^2k!\),使用树上背包,时间复杂度 \(O(n^2)\)

总结:

  • 树上匹配问题考虑重心

P8253 [NOI Online 2022 提高组] 如何正确地排序

假设所有数对 \(\max\)\(\min\) 都有贡献,则答案为 \(2n\times sum\) 减去没有贡献的,转化成如下形式:

假设现在有数组 \(x,y,z\),对每个 \(y_i\) 计算有多少 \(j\) 满足:

\[\begin{cases} x_i-y_i\le y_j-x_j\\ y_i-z_i\le z_j-y_j \end{cases} \]

选择任意二位偏序求解方法计算,时间复杂度 \(O(n \log n)\),注意我们要枚举三个有序数组,所以带上 \(24\) 倍常数。

总结:

  • 补集转化的使用:?

P7962 [NOIP2021] 方差

每次操作等价于交换差分,我们要最小化 \(n \times \sum a_i^2- (\sum a_i)^2\),有如下结论:差分是先减小后递增的。

把差分重排,从小到大考虑,那么每个差分要么插在首要么插在尾,差的形式不好维护,考虑将一维放到状态里去,设 \(f_{i,j}\) 表示处理到前 \(i\) 个差分,这 \(i\) 个差分还原出来的 \(a_i\) 的序列的和是 \(j\),在这个情况下的 \(\sum a_i^2\) 的最小值,不为 \(0\) 的差分只有 \(O(V)\) 个,时间复杂度 \(O(nV^2)\)

总结:

  • 把尽量简单且能覆盖其他信息的结构加入状态

[ARC161E] Not Dyed by Majority (Cubic Graph)

考虑无解的占比很大,随机一个颜色序列,使用 2-SAT 判断即可。

总结:

  • 答案在总方案数的占比较大,可以考虑随机化之后 check

CF1819E Roads in E City

考虑删边,删去 \((u_i,v_i)\) 后随机询问 \(k\)\(u_i\)\(v_i\),若 \(u_i,v_i\) 不连通,则有极大概率得到至少一个 $0,否则所有询问均返回 \(1\) ,由此求出任意一棵被修复的边的生成树。

接下来考虑每条非树边 \((u_i,v_i)\),删去 \(u_i,v_i\) 树上简单路径上任意一条边 \((u_j,v_j)\),然后加入 \((u_i,v_i)\),随机询问 \(k\)\(u_i\)\(v_i\)

正确率为 \(1 - \frac{1}{2^k}\)

posted @ 2023-07-21 21:13  墨珂  阅读(29)  评论(0)    收藏  举报