CF1827B2 Range Sorting (Hard Version) 题解

发现选择的区间不包含且不相交,于是区间的形式为选一段空一段。

考虑到 rlr-l 即为每个区间 [i,i+1][i,i+1] 的贡献。

于是考虑 [i,i+1][i,i+1] 什么时候不选,发现当左段的最大值小于右端的最大值时,[i,i+1][i,i+1] 不选更优。

于是枚举左段的最大值 xx,位置为 bb,要求右段的最小值比 xx 大。

维护 set 找到前一个比 xx 大的数的位置 aa,后一个比 xx 大的数的位置 cccc 后面第一个比 xx 小的数的位置 dd

那么左段的左端点可以在 (a,b](a,b] 中选,右端点为 c1c-1,右段的左端点是 cc,右端点在 (c,d](c,d] 中选,贡献为 (ba)×(dc)(b-a)\times (d-c)

时间复杂度 O(nlogn)\mathcal O(n\log n)

posted @   蒟蒻orz  阅读(7)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 全程使用 AI 从 0 到 1 写了个小工具
· 快收藏!一个技巧从此不再搞混缓存穿透和缓存击穿
· AI 插件第二弹,更强更好用
· Blazor Hybrid适配到HarmonyOS系统
点击右上角即可分享
微信分享提示