AtCoder Beginner Contest 277

E - Crystal Switches

经典分层图。

搞两层图,一层对应初始状态,一层对应开了奇数次开关后的状态;假设点 \(v\) 处有开关,就在两层图中 \(v\) 对应的点间连一条边。

然后就是最短路板子了。

F - Sorting a Matrix

\(0\) 可以变成任何数,所以可以忽略。

观察:不管怎么变换,原本同一行的数还会在同一行,原本同一列的数还会在同一列。
推论1:忽略 \(0\),各行的值域不能相交,否则无解。
推论2:忽略 \(0\),假设在某一行上,第 \(x\) 列的数大于第 \(y\) 列上的数。那么对于每一行,第 \(x\) 列的数大于第 \(y\) 列上的数都要成立,否则无解。

对于推论1,就扫一遍排个序的事情。

对于推论2,若第 \(x\) 列的数大于第 \(y\) 列上的数,就连一条有向边 \(x \to y\)。如果建出来的图没有环,则说明没有冲突,满足条件。

但是可能会有相等的元素,所以要做到把所有的关系都考虑到的话就只能暴力枚举,这样会被卡超时。

假设某一行上的数从小到达可以划分为 \(b_1, b_1, \dots, b_1, b_2, b_2, \dots, b_2, \dots, b_k, b_k, \dots, b_k\),那么可以虚拟出值为 \(\frac{b_i + b_{i + 1}}{2}\) 的点 \(x\),然后 \(x\) 向所有值为 \(b_i\) 的点连边,所有值为 \(b_{i + 1}\) 的点向 \(x\) 连边。这样就可以排序 \(O(n \log n)\) 代替 \(O(n^2)\) 枚举。易得这样的点至多有 \(O(nm)\) 个,在能接受的范围之内。

然后就是拓扑排序搞有向图判环。

G - Random Walk to Millionaire

参考kmjp's blog

维护以下几个状态:

  • \(p(i, u)\):操作 \(i\) 次过后位于 \(u\) 的概率。
  • \(dp1(i, u)\):操作 \(i\) 次过后位于 \(u\) 的期望等级 乘上 \(p(i, u)\)
  • \(dp2(i, u)\):操作 \(i\) 次过后位于 \(u\) 的期望等级的平方之和 乘上 \(p(i, u)\)

那么 满足 \(c_u = 1\)\(dp2(i, u)\) 之和就是答案。

转移的时候,就枚举每一条边 \(u \to v\)\(p(i - 1, u)\)可以转移到 \(p(i, v)\)\(dp1\)\(dp2\) 类似。

如果 \(c_v = 0\) ,新增的 \(v\)\(dp1(i, v)\) 还会有 \(p(i, v)\) 的贡献,对 \(dp2(i, v)\) 还会有 \(2 \times dp1(i, v) + p(i, v)\) 的贡献。

后者是因为\((E(X + Y))^2 = (E(X) + E(Y))^2\),即linearity of expectation。

Ex - Constrained Sums

CF1697F,不能说一模一样,只能说完全相同。

posted @ 2022-11-14 22:07  _Backl1ght  阅读(108)  评论(0编辑  收藏  举报