洛谷1973嘉年华
本来一看数据范围,n为200
就很容易去想以各个区间的序号为状态
但是这样要么顾得了头顾不了尾,要么顾得了尾顾不了头(即以区间左端点排序或者以区间右端点排序)
所以我们以区间的时间为状态,那么这里肯定要离散化,这样枚举的时间既有可能是左端点,也有可能是右端点,就可以推走了
然后可以看看这篇题解
解释一下这篇题解状态转移方程是怎么出来的
首先我们想一下最优的方案的第一份中区间右端点最大是多少
所以我们枚举一个k,其中k小于i,表示第一份的区间最大右端点,那么显然就是
那么为什么还需要第一个状态转移方程?
因为我们有可能漏掉一个最优解:当i这个时间点是某些区间的右端点时,我们上述转移方程没有考虑到把这些区间中的某一些放入第一份的情况
我们假设最优方案第一份中右端点为i的区间的左端点最小为p,那么当k枚举到p-1的时候,就把这个最优方案包含进去了。这就是第一个状态转移方程
当然最后答案我觉得可以不用取min就一定会枚举到最优方案
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构