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 许可协议。转载请注明出处!
  • 相关阅读:
    和Mac有关的所有快捷键整理
    Python学习笔记
    在PHP的AWS SDK 的上传功能中指定Content-Type
    Docker 部署 Yapi
    PHP 队列
    数据库设计之一 数据库范式
    docker centos PHP7.2 安装 bcmath数学扩展
    记联调微信支付,调起微信支付之后显示支付验证失败
    记Windows 2012 FTP配置之后 客户端登陆报错
    记一次 MAC 安装 homebrew 报错解决
  • 原文地址:https://www.cnblogs.com/radiumlrb/p/5793873.html
Copyright © 2011-2022 走看看