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 列上的数,就连一条有向边 xy。如果建出来的图没有环,则说明没有冲突,满足条件。

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

假设某一行上的数从小到达可以划分为 b1,b1,,b1,b2,b2,,b2,,bk,bk,,bk,那么可以虚拟出值为 bi+bi+12 的点 x,然后 x 向所有值为 bi 的点连边,所有值为 bi+1 的点向 x 连边。这样就可以排序 O(nlogn) 代替 O(n2) 枚举。易得这样的点至多有 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)

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

转移的时候,就枚举每一条边 uvp(i1,u)可以转移到 p(i,v)dp1dp2 类似。

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

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

Ex - Constrained Sums

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

posted @   _Backl1ght  阅读(118)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示