小明打联盟
网址链接:牛客网
题目大意
- 有三个基本技能施法时间x,y,z,其伤害分别为a,b,c
- 有一个大招施法时间为L,可以释放的时间为[L,R],这个区间,其伤害为 temp + A * i (i为从L开始的蓄力时间)
- 求T时间内最大连招伤害
解题思路
可以考虑使用背包DP思路,将大招L,R的时间点看成两个独立的技能,L的伤害为temp,R的伤害为temp+(R-L)*A。最后在dp结果求一遍大招最大伤害,求得最优解。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define rep(i,n) for(int i = 0; i < n; ++i)
#define rep2(i,st,ed) for(int i = st; i < ed; ++i)
#define mk(x,y) make_pair(x,y)
#define pb(x) push_back(x)
const ll mod = 1e9 + 7;
const ll N