AT_abc325_f Sensor Optimization Dilemma 题解
AT_abc325_f Sensor Optimization Dilemma 题解
Date 20231025:修复手滑公式 \(\min\)、\(\max\) 写反了。
动态规划。类似背包问题。
朴素算法
记 \((x,y)\) 表示使用 \(x\) 个 (1) 传感器、\(y\) 个 (2) 号传感器。
设 \(f(t,i,j)\) 表示覆盖前 \(t\) 个区间,使用 \((i,j)\) 传感器,是否可行。
枚举第 \(t\) 个区间使用 \((p,q)\) 传感器:
状态数 \(NK_1K_2\),转移量 \(K_1K_2\),因此,总时间复杂度为 \(\mathcal{O}(N{K_1}^2{K_2}^2)\),大约为 \(10^{14}\),不可过。
考虑优化
每个状态只记录 \(0/1\) 是不是有点浪费呢?
于是就可以考虑一个经典的状态设计优化,将一个状态放在结果里。
我们可以将 \(f(t,i,j)\) 的 \(j\) 放在结果里。
具体的,设 \(f(t,i)\) 表示考虑前 \(t\) 个区间,使用 \(i\) 个 (1) 传感器,最少要使用的 (2) 传感器数量。
明显的,结果为 \(\min\limits_{i=1}^{K_1}\{f(n,i)\}\space(f(n,i)\le K_2)\).
其实这个式子也是有单调性的,但是由于 \(K\le10^3\),我们可以不用考虑。
考虑转移,也不复杂,与朴素算法类似,我们枚举第 \(t\) 个区间使用 \(k\) 个 \((1)\) 传感器,那么给 \((2)\) 号传感器留了 \(\max(D_i-kL_1,0)\) 的空间:
状态数 \(NK_1\),转移量 \(K_1\),因此,总时间复杂度为 \(\mathcal{O}(N{K_1}^2)\),大约为 \(10^8\),可过。
本文来自博客园,作者:RainPPR,转载请注明原文链接:https://www.cnblogs.com/RainPPR/p/solution-at-abc325-f.html
如有侵权请联系我(或 2125773894@qq.com)删除。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!