zoukankan      html  css  js  c++  java
  • TYVJ P1023 奶牛的锻炼 Label:dp

    背景

    USACO

    描述

    奶牛Bessie有N分钟时间跑步,每分钟她可以跑步或者休息。若她在第i分钟跑步,可以跑出D_i米,同时疲倦程度增加1(初始为0)。若她在第i分钟休息,则疲倦程度减少1。无论何时,疲倦程度都不能超过M。另外,一旦她开始休息,只有当疲惫程度减为0时才能重新开始跑步。在第N分钟后,她的疲倦程度必须为0。

    输入格式

    第一行,两个整数,代表N和M。
    接下来N行,每行一个整数,代表D_i。

    输出格式

    Bessie想知道,她最多能跑的距离。

    测试样例1

    输入

    5 2 




    10

    输出

    9

    备注

    N <= 2000 , M <= 500 , D_i <= 1000
    Vivian Snow
    广东汕头聿怀初级中学NOIp第一次训练用题

    代码

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 #include<algorithm>
     5 
     6 
     7 using namespace std;
     8 int N,M;
     9 int f[2005][505],d[2005];
    10 
    11 int main(){
    12 //    freopen("01.txt","r",stdin);
    13     scanf("%d%d",&N,&M);
    14     for(int i=1;i<=N;i++) 
    15         scanf("%d",&d[i]);
    16     for(int i=1;i<=N;i++){
    17         f[i][0]=f[i-1][0];
    18         for(int j=1;j<=M;j++){
    19             f[i][j]=f[i-1][j-1]+d[i];
    20             if(j<=i) f[i][0]=max(f[i][0],f[i-j][j]);
    21         }
    22     }
    23     printf("%d
    ",f[N][0]);
    24     return 0;
    25 }  

    两个问题,一个是d数组题目没看清开小了

    还有一个是没有考虑到直接休息的情况,17行没写

    转载:

    用f(i,j)表示第i天结束,疲劳值为j的最远跑步距离

    f(i,j)=f(i1,j1)+Dif(i,j)=f(i−1,j−1)+Di

    f(i,0)=max{f(ij,j)}

    版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!
  • 相关阅读:
    CentOS 6.5 zabbix 3.0.4 乱码问题
    CentOS-6.5安装zabbix 3.0.4
    NFS工作原理及配置文件详解
    CentOS-6.5-NFS部署
    Swift中简单的单例设计
    UITableViewCell实现3D缩放动画
    Swift
    Swift
    [转]Swift编程风格指南
    pch文件出现no such file or directory错误
  • 原文地址:https://www.cnblogs.com/radiumlrb/p/5793873.html
Copyright © 2011-2022 走看看