把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

UOJ #823. 【UR #26】铁轨回收

题面传送门

拜谢 zaky!

首先考虑 Bi1 的部分分,我们考虑采用一种“提前”的 dp 方法。我们设 fi,j 表示从后往前考虑到第 i 个,仍有 j0 需要变成 1 的方案数。每次转移的时候枚举当前这个值最终是什么,并选择 [i+1,n] 中的一个数转移过去。

进一步的,我们可以得到一个普适的 dp:设 dpi,S 表示从后往前到第 i 个,[i+1,n] 中序列为 S,其中 Si 表示仍有 Sii 需要被减少到至少 0 以下。这里需要将至少容斥成恰好,也即如果枚举了 x 的最终值是 Cx(AxCxBx),需要用 x 最终至少是 Cx 的方案数减去 x 最终至少是 Cx+1 的方案数,这样的复杂度是 (nB) 级别的。

这样子并不够优。可以注意到的是,刚开始 S 内所有数的和是 B 级别的,如果能让过程中都保持这个状态,那么复杂度就是可以接受的。会使 S 内所有数变大的情况是某个数顶到了 Bx 的上界,我们考虑单独处理。我们可以再进行一个容斥,将 Bx 顶到上界用 x 随意连减去 x 不顶到上界的情况。为此,我们重设 dp 状态为 dpi,j,S,其中 j 表示后面有 j 个数是可以随意连的。转移需要分类讨论一下每个数是连向非随意连还是随意连。如果连向非随意连,那么 S 内数的总和会至少减去 Ax,否则当前数也可以看作随意连,总和不变。

状态数是 O(n2π(B)) 的,其中 π(B) 表示 B 的划分数,转移数是 B1.5 的,预处理划分数之间的转移以后就可以做到 O(n2π(B)B1.5)

不要写记搜,慢死了。

submission

posted @   275307894a  阅读(128)  评论(3编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2021-10-30 JOISC 2014
浏览器标题切换
浏览器标题切换end
点击右上角即可分享
微信分享提示