题目 3157

「Fence」 围栏

题号
3157
时间限制
1000 ms
内存限制
128 MB
标签
动态规划单调队列优化DP

有N块木板从左到右排成一行,有M个工匠对这些木板进行粉刷,每块木板至多被粉刷一次。

第 i 个木匠要么不粉刷,要么粉刷包含木板 SiS_i 的,长度不超过 LiL_i 的连续的一段木板,每粉刷一块可以得到 PiP_i 的报酬。

不同工匠的SiS_i不同。

请问如何安排能使工匠们获得的总报酬最多。

输入格式

第一行包含两个整数N和M。

接下来M行,每行包含三个整数Li,Pi,SiL_i,P_i,S_i

输出格式

输出一个整数,表示结果。

数据范围

1N160001 \le N \le 16000,
1M1001 \le M \le 100,
1Pi100001 \le P_i \le 10000

输入样例:

文本
8 4
3 2 2
3 2 3
3 3 5
1 1 7 

输出样例:

文本
17

来源

  • 《算法竞赛进阶指南》
  • acwing 可能含有视频讲解