【DP】晨练计划(ybtoj)
生活随笔
收集整理的這篇文章主要介紹了
【DP】晨练计划(ybtoj)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
正題
ybtoj
題目大意
給你n個時間點
在第i個時間點跑步有aia_iai?點貢獻,但會加一點疲憊值,疲憊值不能超過m
當前疲憊值為x,那么你可以花x點時間來清空疲憊值,當然也可以啥都不干
問你第n個時間后疲憊值為0的最大貢獻
解題思路
設f_{i,j}為第i個時間點疲憊值為j的最大貢獻
然后按題意DP即可
代碼
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define ll long long using namespace std; int n, m, x, f[10010][510]; int main() {scanf("%d%d", &n, &m);for (int i = 1; i <= n; ++i){scanf("%d", &x);f[i][0] = f[i - 1][0];for (int j = 1; j <= min(m, i); ++j)f[i][0] = max(f[i][0], f[i - j][j]);//恢復體力for (int j = 1; j <= m; ++j)f[i][j] = max(f[i][j], f[i - 1][j - 1] + x);//跑步}printf("%d", f[n][0]);return 0; }總結
以上是生活随笔為你收集整理的【DP】晨练计划(ybtoj)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文件丢失用什么软件恢复有什么恢复文件的软
- 下一篇: 打印机与复印机有什么区别复印机和打印机有