AtCoder Beginner Contest 277 (F,G,Ex)

之前没细想过 OSU 那个题,被 G 薄纱,F 也没写完,输麻了

懒得放链接,代码可以直接去 AtCoder 上搜。ID: YunQianQwQ

F

首先求出每列的最大最小值,然后依此排序,如果出现 insertion 即 l1l2<r1r2 这种情况就直接 No

然后只需要考虑两行能否同时交换排成有序。设这两行分别是 A1m,B1m,我们发现如果有 i,j 满足 Ai>AjBi<Bj 就可以直接无解。

进一步,我们发现一行中的一个 Ai>Aj 意味着第 i 列要在第 j 列前面,因此考虑从 ij 连有向边。最终的图中,如果出现环则无解。

直接暴力连边肯定不行,不过很常见的思路是我们排序,然后只在相邻的数值之间连边。

但存在相等的情况,如果有 x1y2,我们要连出来 x×y 条边,场上因为这个降智了想了很久,甚至一度以为解法错了。。。实际上只需要建个虚点就完事了。。。

具体来说对于每一段相等的连续段我们建个虚点 u,然后让所有连续段中的 i 连边 iu,并让 u 连向所有下一个连续段的 j 即可。

0 怎么处理呢?其实可以不用管,最终如果 0 不存在时可行,那么加上 0 一定可行。我们只需要在不存在 0 时确定的方案中把 0 安排成对应连续段即可。

G

按照一般的期望 DP 倒推方式,显然可以设 f(u,j,k) 表示从 u 开始走,当前的 level 为 j,还要走 k 步,的期望分数。这样转移非常 ez,但是复杂度为 O((N+M)K2)

然后我们发现 level 和前面的东西相关,因此考虑正推,下面翻译一下 user editorial

维护 p(u,i) 表示 i 步之后走到 u 的概率,f1(u,i) 表示 i 步之后停留在 u 的前提下,level 的期望值,f2(u,i) 表示 i 步之后停留在 u 的前提下,设 level 为 X,那么 f2(u,i)=E(X2)

那么

p(u,i)=(v,u)Ep(v,i1)deg(v)

原因显然。同理有

f1(u,i)=(v,u)Ep(v,i1)deg(v)×f1(v,i)+[cu=0]

然后 f2 的转移稍微复杂一点,有

f2(u,i)={(v,u)Ep(v,i1)deg(v)×f2(v,i),cu=1(v,u)Ep(v,i1)deg(v)×(f2(v,i)+2f1(v,i)+1),cu=0

这是因为 cu=0 的时候 level 会加一,而 E((X+1)2)=E(X2)+2×E(x)+1

答案就是

i=1kcv=1f2(v,i)×p(v,i)

于是就 O((N+M)K) 做完了。

然而倒推其实是可以做的,我们需要提前考虑贡献:设 f0/1/2(u,i) 表示从 u 开始走 i 步,初始 level 为 0,但是每次遇到 cv=1 的点时,若 level=X,计算的贡献是 X0/X1/X2 时的期望分数。

转移的时候,如果遇到 cu=1 的点,由于初始 level 是 0,可以直接由 1deg(u)(u,v)Ef2(v,i1) 转移

如果遇到 cu=0 的点,我们在这里考虑后面所有点的权值变化

发现后面会有 f0(u,i) 次计算权值,每一次都从 X2 变成了 (X+1)2,增加量为 2X+1

因此期望的增加量恰好就是 2f1+f0,有

f2(u,i)=(u,v)E1deg(u)×(f2(v,i1)+2f1(v,i1)+f0(v,i1))

类似可以转移 f1,f0,同时我们发现该做法可以轻易扩展到次幂为任意 w 的情形,复杂度要多一个 O(w2)

思考一下,如果是 w 次幂,那么

fw(u,i)=(u,v)E1deg(u)×j=0w(wj)fj(v,i1)

发现系数是组合数,可以卷积。。。因此可以做到 O((N+M)K×wlogw)

official editorial 貌似使用了组合意义,懒得翻译了,实现上完全一致

Ex

这是 cf 之前一场 Edu 出过的题目。。我还打过那场。。。

注意值域 [0,M] 很小,考虑拆出来 N×(M+1) 个点,用变量 pi,j 表示 Xij 是否成立。

那么约束以 XAi+XBiRi 为例,我们对每个 j=0,1,,M,如果 XAij 成立,那么必须要有 XBiRij 成立,即 XBiRij+1 不成立。

类似地可以连出 Li 的边。然后再连边 pi,jpi,j1 表示如果 Xij 则有 Xij1

最后跑个 2sat 就完事了,复杂度 O((N+Q)M)

posted @   云浅知处  阅读(146)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示