Description
Jby最近喜欢玩一个打鼹鼠的游戏,这个游戏是这样的:
有m只鼹鼠出现在一个1 ~ n的长条上。对于第k只鼹鼠,我们用t[k], w[k], x[k]来描述。即在t[k]时刻,会有一只分值为w[k]的鼹鼠k出现在位置x[k]上。现在你有一个锤头,每一时刻它都停留在一个位置上。你可以用它不费时间的敲死一只鼹鼠并得到相应的分值。但是每个时刻你的锤头最多只能移动p格。也就是说如果s时刻你在位置pos,那么s + 1时刻你运动到位置pos – p ~ pos + p。
在零时刻你的锤子可以在任意位置。鼹鼠出现的时刻大于0。并且同一时间同一位置不会有两只鼹鼠出现,因为他们太胖了。
而Jby希望拿到的分值最大,但总是很难实现,你能帮助他吗?
Input
本题只有一组数据。
第一行两个正整数n,m,p如题中定义。
然后m行每行三个正整数t[k], w[k], x[k]描述第k只鼹鼠。
N <= 100000;M <= 100000;p <= 5;t[k] <= 100000。1<=x[k]<=n
注意,本题输入数据较大,对于使用C++的选手需要使用scanf来读入。
Output
只有一行一个整数为最大得分。保证答案不会超过长整型。
Sample Input
5 20 1
2 17392 5
3 21061 3
5 21177 4
6 25416 1
7 23512 4
9 27947 1
13 12313 3
14 1126 5
15 27358 2
16 17741 3
17 23412 4
18 32142 2
19 7729 2
20 23539 1
22 15923 2
26 5083 1
31 6022 1
33 24950 3
34 29713 2
35 13623 5
Sample Output
276937
Hint
对于30%的数据有p = 1;M<=1000;
对于60%的数据有N*M<=10^6
对于100%的数据如题目描述。
想法:
笔者较懒,未实现,也就无附代码