题目链接:P10978 Fence - 洛谷。
本题是经典 DP 单调队列优化题型。
题目描述
一组由
作为团队的领导者,你需要为每个工人确定他们应该粉刷的区间,并且确保总收入最大化。总收入代表工人个人收入的总和。
编写一个程序来确定
输入格式
输入的第一行是是两个正整数
接下来
输出格式
输出一个整数,表示总最大收入。
输入输出样例 #1
输入 #1
1 |
|
输出 #1
1 |
|
题解
状态定义和转移
定义
考虑转移,共三种情况:
-
第
个木匠可以什么也不刷。收入为 。 -
第
个木板可以不被粉刷进行粉刷。收入为 。 -
第
个木匠对第 个木板进行粉刷。枚举第 个木匠接着从第 个木板刷到 ( ),收入为 。
状态转移时,
单调队列优化
我们发现第三种情况枚举
我们把它化简为
我们发现,
维护一个
维护原则:如果存在
答案即为