最优化问题
二分
许多最优化问题可以通过二分来转化为判定性问题。
0-1 分数规划
0-1 分数规划思想用于求解分式最优化问题。可以通过对分式二分判定,转化为某一式子大于/小于常数,然后求对应最值即可。
动态规划
动态规划算法的一大用处就是解决最优化问题。朴素的动态规划效率一般,需要优化。
例题(状态压缩 DP):Luogu P3959 [NOIP2017 提高组] 宝藏
斜率优化
数据结构
一些最优化问题可以用数据结构求解。
例题:[NOI2010] 超级钢琴
本题求 \(k\) 个总和最大,就是求前 \(k\) 大的区间和。类似于 P1631 序列合并,这样的问题可以用堆来求解。
把所有区间按右端点分类,求出每个右端点对应的所有区间中总和最大的丢进大根堆。每次取出堆顶区间,将这个区间和记入答案,同时尽可能将这个右端点对应的下一大的区间丢进堆。
求解某右端点对应的总和第 \(k\) 大的区间可以转化为前缀和上的区间静态第 \(k\) 小问题,用可持久化线段树解决。
参考代码:loj