zoukankan      html  css  js  c++  java
  • [TYVJ] P1023 奶牛的锻炼

    奶牛的锻炼

    背景 Background
    USACO
     
    描述 Description
    奶牛Bessie有N分钟时间跑步,每分钟她可以跑步或者休息。若她在第i分钟跑步,可以跑出D_i米,同时疲倦程度增加1(初始为0)。若她在第i分钟休息,则疲倦程度减少1。无论何时,疲倦程度都不能超过M。另外,一旦她开始休息,只有当疲惫程度减为0时才能重新开始跑步。在第N分钟后,她的疲倦程度必须为0。
     
    输入格式 InputFormat
    第一行,两个整数,代表N和M。
    接下来N行,每行一个整数,代表D_i。
     
    输出格式 OutputFormat
    Bessie想知道,她最多能跑的距离。
     
    样例输入 SampleInput [复制数据]

    5 2
    5
    3
    4
    2
    10

    样例输出 SampleOutput [复制数据]

    9

    数据范围和注释 Hint
    N <= 2000 , M <= 500 , D_i <= 1000
     
    题解:线性动态规划。维护一个二维数组f[n][m],表示在第n个点,疲倦程度为m时跑得最远路程。状态转移: (选择跑步)f[i][j]=max(f[i][j],f[i-1][j-1]+d[i]);(选择休息)f[i][0]=max(f[i][0],f[i-j][j]);f[i][0]=max(f[i][0],f[i-1][0]);最后f[n][0]即为所求。
     
    代码:
     1 #include<stdio.h>
     2 #include<string.h>
     3 int i,j,n,m,k,
     4     f[2100][510],d[2100];
     5 
     6 int 
     7 pre()
     8 {
     9     memset(f,0,sizeof(f));
    10     memset(d,0,sizeof(d));
    11     return 0;
    12 }
    13 
    14 int
    15 max(int a,int b)
    16 {
    17     if(a<b) return(b);
    18     else return(a);
    19 }
    20 
    21 int 
    22 dp()
    23 {
    24     for(i=1;i<=n;i++)
    25     {
    26         for(j=1;j<=m;j++)
    27         {
    28             f[i][j]=max(f[i][j],f[i-1][j-1]+d[i]);
    29             if((i-j)>=0)
    30             f[i][0]=max(f[i][0],f[i-j][j]);
    31             f[i][0]=max(f[i][0],f[i-1][0]);
    32         }
    33     }
    34     return 0;
    35 }
    36 
    37 int 
    38 init()
    39 {
    40     scanf("%d%d
    ",&n,&m);
    41     for(i=1;i<=n;i++)
    42     scanf("%d",&d[i]);
    43     return 0;
    44 }
    45 
    46 int
    47 main()
    48 {
    49     pre();
    50     init();
    51     dp();
    52     printf("%d
    ",f[n][0]);
    53     
    54     return 0;
    55 }
  • 相关阅读:
    创业公司新品如何寻求科技媒体的报道?
    DevStore分享:详析消费者十大心理学
    DevStore教你如何玩转饥饿营销?
    iClap分享:如何优雅的在 APP 中实现测试?
    java内部类
    Tostring 的用法
    Java 集合详解
    Java集合浅析
    异常--解析
    is-a 、have-a、和 like-a的区别
  • 原文地址:https://www.cnblogs.com/sxiszero/p/3620911.html
Copyright © 2011-2022 走看看