[dp] poj 3661 Running

题意:

一只奶牛可以跑n分钟,疲劳度上限是m。

接下来是每分钟可以跑a[i]米。

然后对于每分钟可以选择跑或者休息,跑的话疲劳度增加一点疲劳度。

休息的话每分钟减少一点疲劳,但是如果选择休息,那么必须休息至疲劳度为零。

问n分钟后,疲劳度为0的,所能跑的最远距离。

思路:

水dp,dp[i][j]代表前i分钟疲劳度为j跑的最远距离。

状态转移就是跑或者休息。

代码:

#include"cstdlib"
#include"cstdio"
#include"cstring"
#include"cmath"
#include"queue"
#include"algorithm"
#include"iostream"
#include"map"
using namespace std;
int dp[10245][512];
int v[10245];
int main()
{
    int n,m;
    while(scanf("%d%d",&n,&m)!=-1)
    {
        for(int i=1;i<=n;i++) scanf("%d",&v[i]);
        memset(dp,0,sizeof(dp));
        for(int i=1;i<=n;i++)
        {
            for(int j=0;j<=m;j++)
            {
                if(j!=0 && i+j-1<=n ) dp[i+j-1][0]=max(dp[i+j-1][0],dp[i-1][j]);
                else  dp[i][0]=max(dp[i-1][0],dp[i][0]);
                if(j!=m) dp[i][j+1]=max(dp[i][j+1],dp[i-1][j]+v[i]);
            }
        }
        printf("%d\n",dp[n][0]);
    }
    return 0;
}
时间: 2024-10-01 20:31:32

[dp] poj 3661 Running的相关文章

poj 3661 Running dp

题意: 有n分钟时间,每分钟牛能跑d[i]路程,在每分钟,牛可以选择跑,这样疲劳度会+1,也可以选择不跑,这样疲劳度会-1(最少到0),问n分钟后疲劳度为0时最多能跑多远,注意牛要疲劳度为0才能继续跑. 分析: 设dp[i][j]表示i分钟结束奶牛疲劳度为j时能跑的最远距离,则转移有:dp[i-1][j-1]->dp[i][j]+d[i],dp[i][j]->dp[i+j][0]; 代码: //poj 3661 //sep9 #include <iostream> using na

poj 3661 Running(区间dp)

Description The cows are trying to become better athletes, so Bessie is running on a track for exactly N (1 ≤ N ≤ 10,000) minutes. During each minute, she can choose to either run or rest for the whole minute. The ultimate distance Bessie runs, thoug

poj 3661 Running

题意:给你一个n,m,n表示有n分钟,每i分钟对应的是第i分钟能跑的距离,m代表最大疲劳度,每跑一分钟疲劳度+1,当疲劳度==m,必须休息,在任意时刻都可以选择休息,如果选择休息,那么必须休息到疲劳度为0,当然,当疲劳度为0的时候也是可以继续选择休息的,求在n分钟后疲劳度为0所跑的最大距离 思路:dp[i][j]表示在第i分钟疲劳度为j的时候所跑的最大距离,dp[i][j]=dp[i-1][j-1]+d[i]:这个转移,说的是,第i分钟选择跑步,当然,第i分钟可以选择不跑步,那么就是选择休息,题

[dp] poj 1015 Jury Compromise

题目链接: http://poj.org/problem?id=1015 Jury Compromise Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 24438   Accepted: 6352   Special Judge Description In Frobnia, a far-away country, the verdicts in court trials are determined by a jury

[kuangbin 基础dp][POJ 1015] Jury Compromise(dp)

[kuangbin 基础dp][POJ 1015] Jury Compromise 题目 In Frobnia, a far-away country, the verdicts in court trials are determined by a jury consisting of members of the general public. Every time a trial is set to begin, a jury has to be selected, which is do

POJ 3661:Running 区间DP

Running 题目链接: http://poj.org/problem?id=3661 题意: 有一只牛在跑步,在第 i 分钟它可以跑Ni米,疲惫值加1(疲惫值初始为0),或者休息一分钟,疲惫值减1(只有疲惫值到了0才能重新开始跑步),当匹配值达到M时它必须休息,且第N分钟结束时牛的疲惫值必须为0,求这只牛最远可以跑几米. 题解: 设dp[i][j]在 i 分钟里疲惫值限制为j的情况下牛可以跑的最远距离.一般情况下这样设就行了,但是因为题目限制只要开始休息就必须休息到疲惫值为0,所以这里将dp

POJ 题目3661 Running(区间DP)

Running Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5652   Accepted: 2128 Description The cows are trying to become better athletes, so Bessie is running on a track for exactly N (1 ≤ N ≤ 10,000) minutes. During each minute, she can

POJ 3661 (线性DP)

题目链接: http://poj.org/problem?id=3661 题目大意:牛跑步.有N分钟,M疲劳值.每分钟跑的距离不同.每分钟可以选择跑步或是休息.一旦休息了必须休息到疲劳值为0.0疲劳值也可以花费1分钟去休息.最后疲劳值必须为0,问跑的最大距离. 解题思路: 怎么看都像个随便YY的DP. 用dp[i][j]表示第i分钟,疲劳值为j的最大距离. 首先考虑第i分钟休息问题: ①上次已经疲劳为0,这次又休息.dp[i][0]=dp[i-1][0]. ②上次疲劳为k.dp[i][0]=ma

【POJ 3661】Running

Running Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5598   Accepted: 2102 Description The cows are trying to become better athletes, so Bessie is running on a track for exactly N (1 ≤ N ≤ 10,000) minutes. During each minute, she can