CF1887D Split 题解
-
我现在水平好烂,再做下去自信心就全败没了
-
先考虑
怎么做? -
两种做法:
-
暴力枚举分界点,左右判断
-
暴力枚举
,找到最靠右边的分界点位置 ,判断是否
-
-
如果你选择优化第一个方法,因为暴力枚举分解点显然没有单调性,判断复杂度也不能整体考虑,因此考虑第二种做法的优化
-
暴力枚举依然没有优化空间,考虑后面这个问题如何整体算。
-
既然我们都枚举了最大值,肯定和极值的大小关系有关嘛。我们枚举
作为最大值,则记左边最近的 满足 ,记右边最近的 满足 ,记在 右边最近的 满足 。则发现当 且 时 满足条件。 -
我们把区间
看成一个点,这显然就是一个矩形加单点查的问题。可以使用树状数组 扫描线解决 -
怎么求
?没有要求线性, 即可 -
单调栈应该不可做,因为
的限制不是 -
最终复杂度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?