记 si,j 表示第 i 行前 j 列的价值和(即前缀和)。 之前模拟赛遇到过类似的线段覆盖问题,考虑 dp,设 fi 表示从 (1,1) 走到 (2,i) 且所选线段的右端点恰好覆盖到 i 的最大收益。 将所有线段按右端点排序,然后对于 i 枚举以 i 为右端点的线段 x 进行转移。 转移有两种:
但上述 dp 存在问题,即线段覆盖的最右端点不一定是最后走到的最右端点,但是至多只有最后一个区间的右端点没有被走到。
枚举没有被走满的区间 x,考虑上一个线段的右端点 i(Lx−1≤i≤Rx−1),以及拐点 j,为了方便,记 gj=s3,n−s3,j−1+s2,j,于是就变成了询问区间 中中[Lx−1,Rx]中 maxi<jfi−s2,i+gj,这个也可以用线段树维护,具体地,对于每个区间维护 ans 和区间 f,g 最大值,合并的时候取 左区间的 ans,右区间的 ans,左区间 f 的 mx 和右区间 g 的 mx 的和 三个值的最大值。
注意只用一条线段的情况特殊考虑,记 ai=s1,i−s2,i−1,bi=s3,n−s3,i−1+s2,i,然后枚举用的区间,又变成询问 ai+bj 的最大值,处理方法同上。
太强了太强了呜呜呜
%%%波特好闪%%%
orz
$bot hs bx bot$
$orz$
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】