CF1889C2 Doremy's Drying Plan (Hard Version)

Problem - C2 - Codeforces

Doremy's Drying Plan (Hard Version) - 洛谷

  • 很好的一道 dp 题,无论是 dp 状态还是优化都很思维

  • 我们设 dpi,j 表示考虑了前 i 个城市,第 i 个城市干旱,删除了 j 天的最多干旱城市。转移时我们枚举上一个干旱城市的位置 k,为了防止一天的天气被重复删除,我们强制钦定在这天影响的区间 [l,r] 中最左边的干旱城市位置删除天气。

  • 考虑覆盖 i 的所有区间 [li,ri]

    • lik 时,说明 i 是最左边的干旱天气

    • li>k 时,说明 i 不是最左边的干旱天气

  • 记第一种情况的区间个数为 t,可以得到转移:

  • dpi,j=maxdpk,jt+1

  • 最终复杂度 O(n2k),能想到这里已经很好了,但我们还要考虑继续优化

  • 我们发现 jK,因此我们可以对于 j 相同的 dp 优化取 max 的过程,可以发现取到的 max 一定是一段区间,因此我们考虑寻找一个数据结构可以做到:

    • 在末尾插入一个数

    • 查询区间 [l,r] 的最大值

  • 线段树也许可以,但复杂度 O(nk2logn) 可能很不好过。但我们发现我们只需要在末尾插入一个数,因此我们尝试使用 st 表。

  • 具体的,我们倒着维护 st 表,即 sti,j 维护 [j2i+1,j]max

  • 最终复杂度 O(nk2+nklogn),可以通过

posted @   FOX_konata  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示