zoukankan      html  css  js  c++  java
  • Bessie的体重问题

    P1028 Bessie的体重问题
    时间: 1000ms / 空间: 131072KiB / Java类名: Main

    背景

    USACO OCT09 8TH 

    描述

    Bessie像她的诸多姊妹一样,因為从Farmer John的草地吃了太多美味的草而长出了太多的赘肉。所以FJ将她置於一个及其严格的节食计划之中。她每天不能吃多过H (5 <= H <= 45,000)公斤的乾草。

    Bessie只能吃一整綑乾草;当她开始吃一綑乾草的之后就再也停不下来了。她有一个完整的N (1 <= N <= 500)綑可以给她当作晚餐的乾草的清单。她自然想要尽量吃到更多的乾草。很自然地,每綑乾草只能被吃一次(即使在列表中相同的重量可能出现2次,但是这表示的是两綑乾草,其中每綑乾草最多只能被吃掉一次)。

    给定一个列表表示每綑乾草的重量S_i (1 <= S_i <= H), 求Bessie不超过节食的限制的前提下可以吃掉多少乾草(注意一旦她开始吃一綑乾草就会把那一綑乾草全部吃完)。

    输入格式

    * 第一行: 两个由空格隔开的整数: H 和 N

    * 第2到第N+1行: 第i+1行是一个单独的整数,表示第i綑乾草的重量S_i。

    输出格式

    * 第一行: 一个单独的整数表示Bessie在限制范围内最多可以吃多少公斤的乾草。



    测试样例1

    输入

    56 4 
    15 
    19 
    20 
    21 

    输出

    56
     

     
     
    //同装箱问题,注意输出
    //f数组要开40000+因为f取决于h的数据范围
    //01背包
     
     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 #include<algorithm>
     5 using namespace std;
     6 int h,n;
     7 int f[40005],a[505];
     8 int main()
     9 {    
    10     cin>>h>>n;
    11     for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    12     f[0]=1;
    13     for(int i=1;i<=n;i++)
    14     {
    15         for(int j=h-a[i];j>=0;j--)
    16         {
    17             if(f[j])f[j+a[i]]=1;
    18         }
    19     }
    20     for(int i=h;i>=0;i--)
    21     {
    22         if(f[i])
    23         {
    24             printf("%d",i);
    25             puts("");
    26             break;    
    27         }
    28     }
    29     return 0;
    30 }
    View Code
  • 相关阅读:
    44-Floyd 算法
    43-Kruskal 算法
    42-MST & Prim 算法
    -垂直(水平)导航栏--转换-过度-动画-多列-瀑布流-事件
    css- 列表-表格table-轮廓-定位-浮动-盒子模型
    JS中[object object]怎么取值
    css- 选择器-背景--文本--字体--链接
    html-时间datetime-获取焦点autofocus-提示required-验证labels-默认值control-可编辑下拉-正则
    ---html链接-表格table-列表ul-布局div-表单form-input属性-多层嵌套的跳转-实体H5-新增属性
    html--块
  • 原文地址:https://www.cnblogs.com/gc812/p/5792897.html
Copyright © 2011-2022 走看看