Processing math: 5%

导航

统计

CF660F题解

vali,j为区间[l,r]的答案

根据题意,我们可以维护a_ii* a_i的前缀和sum1,sum2

val_{l,r}=sum2[r]-sum2[l-1]-(l-1)*(sum1[r]-sum1[l-1])

我们枚举r

对于所有val_{l',r}\le val_{l,r},有

(l'-1)*sum1_{l'-1}-sum2_{l'-1}-(l'-1)*sum1_r\le (l-1)*sum1_{l-1}-sum2_{l-1}-(l-1)*sum1_r

我们发现这个式子可以斜率优化

斜率优化一般把我们要的最大值/最小值也就是这里的val_{l,r}放在b里面,那么(l-1)*sum1_{l-1}-sum2_{l-1}-(l-1)*sum1_r就可以表示成y-kx

把跟r有关的放在k里面,k=sum1_r

于是b=val_{l,r}-sum_r,x=l-1,y=(l-1)*sum1_{l-1}

因为是最大值,我们维护一个上凸壳每次二分找到第一个斜率小于sun1_r的位置,然后更新答案即可

posted on   CHK666  阅读(41)  评论(0编辑  收藏  举报

编辑推荐:
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
阅读排行:
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· 语音处理 开源项目 EchoSharp
· 《HelloGitHub》第 106 期
· mysql8.0无备份通过idb文件恢复数据过程、idb文件修复和tablespace id不一致处
· 使用 Dify + LLM 构建精确任务处理应用
点击右上角即可分享
微信分享提示