阅读
fateice 喜欢阅读,现在他准备读一本书,他会从第K 页开始看,然后看到 第M 页。
书中的内容不一定都让fateice 有所收获,因为fateice 太强。更具体地,书中有N 页能让fateice 有所收获,阅读第
由于书的页数太多,fateice 会选择跳着看,但是他一次最多跳D 页(两页 页码差不大于D),然后阅读跳到的那一页内容,每次翻页他将会丧失A 的收获 值。
fateice 想在阅读这本书前就知道他能获得的最大收获值之和。
输入
第一行五个非负整数K,M,D,A,N。
接下来N行每行两个正整数
易得转移公式
但
首先 我们对上取整是不好处理的
但想到 设
那么
对于这个我们更好处理
原式变为
因此我们想到 维护
其次 突破点在于 我们要想到
若有两个点到当前点的距离模D 同余,则我们只需考虑后一个点。
这里的余数是
这是因为一次一次跳D,那必将经过后面那个点
而不加上后面的那个点的权值,显然是不优的
所以我们可以按
离散化之后很明显 最多就N个
那么后面就很常规了
线段树维护
对于
对于
然后取两边更大的一个转移
最后再把新的得到的一个替代掉原来和自己余数相同的一个
总结:这道题告诉我们这种上取整的处理方式 和 这种同余优化的思想