[bzoj1613][Usaco2008 Jan]Running贝茜的晨练计划_动态规划

Running贝茜的晨练计划 bzoj-1613 Usaco-2008 Jan

题目大意题目链接(U组题题意真的是没法概括qwq....)。

注释:略。


想法:一眼dp题。

状态:dp[i][j]表示到达了i时,疲劳值为j的最大运动量。

转移yy,输出dp[n][0]即可。

最后,附上丑陋的代码... ...

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int f[10005][505];
int v[10005];
int n,m;
inline char nc() {static char *p1,*p2,buf[100000]; return (p1==p2)&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;}
int rd() {int x=0; char c=nc(); while(!isdigit(c)) c=nc(); while(isdigit(c)) x=(x<<3)+(x<<1)+(c^48),c=nc(); return x;}
int main()
{
	n=rd(),m=rd();
    for(int i=1;i<=n;i++) v[i]=rd();
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
             f[i][j]=f[i-1][j-1]+v[i];
             if(i+j<=n) f[i+j][0]=max(f[i+j][0],f[i][j]);
        }
        f[i][0]=max(f[i-1][0],f[i][0]);
    }
    cout << f[n][0] << endl ;
	return 0;
} 

小结:有趣的dp题一道。

posted @ 2018-09-20 14:11  JZYshuraK_彧  阅读(176)  评论(0编辑  收藏  举报