题目描述
输入格式
输出格式
样例
样例输入
【样例输入1】
73
1 2 20 0 3
1 5 10 100 5
2 4 10 10 10
2 9 1 100 10
3 5 20 100 10
4 4 20 0 10
样例输出
【样例输出1】
40
150
70
149
300
150
数据范围与提示
题解
先考虑 t = 0 / 1 t=0/1 t=0/1,列出DP式后发现是一个斜率优化模板题,由于斜率不单调需要在凸包上二分。树上的话维护可撤销的栈即可。问题在于决策点有范围该如何解决,并不能在凸包上直接限制二分范围,因为有一些对于当前范围的最优决策点对全局并不是,会被弹掉。所以应该维护的是每个后缀的凸包,但这不能直接维护。又发现每加入一个点,所做的是查询一段后缀算出DP值,再加入这个点。单点修改区间查询考虑树状数组,用树状数组维护每个点包含的点的栈,查询时在每一个查询的点的栈中二分,取全局最大值即可,效率 O ( n l o g 2 ) O(nlog^{2}) O(nlog2)。