zoukankan      html  css  js  c++  java
  • 01++ Bookshelf 2

    http://poj.org/problem?id=3628

    就是比原题多了一个要求,输出>=m的最小值

    kisang~独立做出来的都开心<( ̄︶ ̄)>

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<cmath>
     4 #include<iostream>
     5 #include<algorithm>
     6 using namespace std;
     7 int w[13000],d[13000],f[1000015];
     8 int main()
     9 {
    10     int n,m;
    11     while(scanf("%d%d",&n,&m)!=EOF)
    12     {
    13      int sum=0;
    14        for(int i=1;i<=n;i++)
    15        {
    16            scanf("%d",&w[i]);
    17            sum+=w[i];
    18        }
    19        for(int i=1;i<=n;i++)
    20         {
    21             for(int k=sum;k>=w[i];k--)
    22             f[k]=max(f[k],f[k-w[i]]+w[i]);
    23         }
    24         int u;
    25         for(int i=m;i<=sum;i++)
    26         {
    27             if(f[i]>=m)  //这里i从m开始就行,不用从1
    28             {
    29                 u=f[i];
    30                 break;
    31             }
    32         }
    33         printf("%d
    ",u-m);
    34     }
    35     return 0;
    36 }
    View Code
  • 相关阅读:
    设计模式之装饰者模式
    每天一点点
    生财有道
    地图的移动和缩放
    钱分割
    位运算
    ref和out
    使用startCoroutine制定倒计时
    静态类和单例类
    Awake和Start
  • 原文地址:https://www.cnblogs.com/XXrll/p/10123339.html
Copyright © 2011-2022 走看看