题目传送门
大致思路
注意到题目限制条件快乐值总和$≤10^{5}$
又 $(1≤m≤50)$,可以想到 $dp$:
记$dp_{i,j}$为在第 $i$ 天获得 $j$ 快乐值的最小花费,于是有:
$dp_{i,j}=min(dp_{i-1,j},dp_{i,{j-h_i}}+c_i)$
对于第二项,当且仅当 $h_i≤j$ 且 $c_i+dp_{i,{j-h_i}}≤cur$ 时可以取到
特别地,当 $j==h_i$ 时额外判断一下 $dp_{i,h_i}=min(c_i,dp_{i,h_i})$
然后就是细节:花费可能会超出 $int$ ,要用 $long\ long$
初始化所有的dp项为极大数字. 特别地: $dp_{i,0}=0$
Code
1 | void solve() { |
说些什么吧!