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 }
  • 相关阅读:
    BZOJ 3684 大朋友和多叉树
    Loj #2495. 「AHOI / HNOI2018」转盘
    Loj #2494. 「AHOI / HNOI2018」寻宝游戏
    Loj 2320.「清华集训 2017」生成树计数
    SQL Server 权限管理
    微信和支付宝支付模式详解及实现(.Net标准库)- OSS开源系列
    跨站请求伪造(CSRF)
    require.js入门
    C#中禁止跨线程直接访问控件
    Video.js web视频播放器
  • 原文地址:https://www.cnblogs.com/sxiszero/p/3620911.html
Copyright © 2011-2022 走看看