之前没细想过 OSU 那个题,被 G 薄纱,F 也没写完,输麻了
懒得放链接,代码可以直接去 AtCoder 上搜。ID: YunQianQwQ
F
首先求出每列的最大最小值,然后依此排序,如果出现 insertion 即 l1≤l2<r1≤r2 这种情况就直接 No
。
然后只需要考虑两行能否同时交换排成有序。设这两行分别是 A1⋯m,B1⋯m,我们发现如果有 i,j 满足 Ai>Aj 且 Bi<Bj 就可以直接无解。
进一步,我们发现一行中的一个 Ai>Aj 意味着第 i 列要在第 j 列前面,因此考虑从 i 到 j 连有向边。最终的图中,如果出现环则无解。
直接暴力连边肯定不行,不过很常见的思路是我们排序,然后只在相邻的数值之间连边。
但存在相等的情况,如果有 x 个 1 和 y 个 2,我们要连出来 x×y 条边,场上因为这个降智了想了很久,甚至一度以为解法错了。。。实际上只需要建个虚点就完事了。。。
具体来说对于每一段相等的连续段我们建个虚点 u,然后让所有连续段中的 i 连边 i→u,并让 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,i−1)deg(v)
原因显然。同理有
f1(u,i)=∑(v,u)∈Ep(v,i−1)deg(v)×f1(v,i)+[cu=0]
然后 f2 的转移稍微复杂一点,有
f2(u,i)=⎧⎪⎨⎪⎩∑(v,u)∈Ep(v,i−1)deg(v)×f2(v,i),cu=1∑(v,u)∈Ep(v,i−1)deg(v)×(f2(v,i)+2f1(v,i)+1),cu=0
这是因为 cu=0 的时候 level 会加一,而 E((X+1)2)=E(X2)+2×E(x)+1。
答案就是
k∑i=1∑cv=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,i−1) 转移
如果遇到 cu=0 的点,我们在这里考虑后面所有点的权值变化
发现后面会有 f0(u,i) 次计算权值,每一次都从 X2 变成了 (X+1)2,增加量为 2X+1
因此期望的增加量恰好就是 2f1+f0,有
f2(u,i)=∑(u,v)∈E1deg(u)×(f2(v,i−1)+2f1(v,i−1)+f0(v,i−1))
类似可以转移 f1,f0,同时我们发现该做法可以轻易扩展到次幂为任意 w 的情形,复杂度要多一个 O(w2)。
思考一下,如果是 w 次幂,那么
fw(u,i)=∑(u,v)∈E1deg(u)×w∑j=0(wj)fj(v,i−1)
发现系数是组合数,可以卷积。。。因此可以做到 O((N+M)K×wlogw)。
official editorial 貌似使用了组合意义,懒得翻译了,实现上完全一致
Ex
这是 cf 之前一场 Edu 出过的题目。。我还打过那场。。。
注意值域 [0,M] 很小,考虑拆出来 N×(M+1) 个点,用变量 pi,j 表示 Xi≥j 是否成立。
那么约束以 XAi+XBi≤Ri 为例,我们对每个 j=0,1,⋯,M,如果 XAi≥j 成立,那么必须要有 XBi≤Ri−j 成立,即 XBi≥Ri−j+1 不成立。
类似地可以连出 Li 的边。然后再连边 pi,j→pi,j−1 表示如果 Xi≥j 则有 Xi≥j−1
最后跑个 2sat 就完事了,复杂度 O((N+Q)M)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!