实际上看到第三个操作类似二阶前缀和就有考虑过提前计算贡献之类的,可惜没有想到(
正着倒着都能做。
这里倒着做。
设 fi,j,k 表示考虑了 i…n 的阶段,用了 j 次治愈法术,所有用治愈法术的阶段编号之和为 k。
则考虑三种操作有 fi,j,k=max{fi+1,j−1,k−i+xi,fi+1,j,k+yi⋅j,fi+1,j,k+zi⋅(k−i⋅j)}
答案显然为 maxi,jf1,i,j。
代码:
1 |
|
实际上看到第三个操作类似二阶前缀和就有考虑过提前计算贡献之类的,可惜没有想到(
正着倒着都能做。
这里倒着做。
设 fi,j,k 表示考虑了 i…n 的阶段,用了 j 次治愈法术,所有用治愈法术的阶段编号之和为 k。
则考虑三种操作有 fi,j,k=max{fi+1,j−1,k−i+xi,fi+1,j,k+yi⋅j,fi+1,j,k+zi⋅(k−i⋅j)}
答案显然为 maxi,jf1,i,j。
代码:
1 | #include <cstdio> |
Related Issues not found
Please contact @Alpha1022 to initialize the comment