zoukankan      html  css  js  c++  java
  • 洛谷 题解 P1353 【[USACO08JAN]跑步Running】

    动态规划

    • 状态
    dp[i][j]表示第i分钟疲劳值为j的最大值
    
    • 初始
    全部都为一个最小值“0”
    
    • 转移
    考虑休息和走
    如果当前疲劳值比时间要大,显然不可能出现这种情况
    如果比时间小
    dp[i][0]=max(dp[i][0],dp[i-j][j]);
    还有走的情况
    dp[i][0]=max(dp[i-1][j-1]+d[i],dp[i][j]);
    
    • 答案
    根据设计的状态不难得出最终的答案为dp[n][0]
    

    完整代码:

    #include<bits/stdc++.h>
    using namespace std;
    const int MAXN=10000+10;
    const int MAXM=500+10;
    int n,m;
    int d[MAXN];
    int dp[MAXN][MAXM];
    inline int read()
    {
    	int tot=0;
    	char c=getchar();
    	while(c<'0'||c>'9')
    		c=getchar();
    	while(c>='0'&&c<='9')
    	{
    		tot=tot*10+c-'0';
    		c=getchar();
    	}
    	return tot;
    }
    int main()
    {
    	n=read();m=read();
    	for(int i=1;i<=n;i++)
    		d[i]=read();
    	for(int i=1;i<=n;i++)
    	{
    		dp[i][0]=dp[i-1][0];
    		for(int j=1;j<=m;j++)
    		{
    			if(i-j>=0)dp[i][0]=max(dp[i][0],dp[i-j][j]);
    			dp[i][j]=max(dp[i-1][j-1]+d[i],dp[i][j]);
    		}
    	}
    	cout<<dp[n][0]<<endl;
    	return 0;
    }
    
  • 相关阅读:
    AGC 014 B
    AGC 012 D
    AGC 012 C
    python
    Linux
    Linux
    Linux
    Linux 之 光标消失隐藏术
    Linux
    python
  • 原文地址:https://www.cnblogs.com/hulean/p/10824684.html
Copyright © 2011-2022 走看看