MoreHolidays
[ABC300F] More Holidays
问题关键:发现并证明一下引理:
- 一定存在最优解最左端的
o
在 。
考虑最优解最左端的 o
不在 x
位置肯定大于 x
,现在修改 x
),因为是循环串,所以这样操作一定是可以进行的。然后又因为这个 o
的左端不能延伸,新串的左右相对位置并没有变(即对于修改的位置,左右情况是完全没有发生变化的),所以这样的操作只要一直进行,那么最优解最左端的 o
一定能跑到
有了这个引理,那么问题就好解决了。我们直接枚举起点,看终点最远能延伸到哪里。当然是尽量穿过,直到这段区间内的 x
个数超过 x
的个数,然后中间的部分直接循环节搞定,最后多出来的部分再使用前缀和搞定。
特别注意要特判最大长度不能超过总长度
code
本文作者:wscqwq
本文链接:https://www.cnblogs.com/wscqwq/p/17485308.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步