zoukankan      html  css  js  c++  java
  • hdu 2546 饭卡

    饭卡

    Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 400 Accepted Submission(s): 216

    Problem Description
    电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。
    某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。
     

    Input
    多组数据。对于每组数据:
    第一行为正整数n,表示菜的数量。n<=1000。
    第二行包括n个正整数,表示每种菜的价格。价格不超过50。
    第三行包括一个正整数m,表示卡上的余额。m<=1000。

    n=0表示数据结束。
     

    Output

                对于每组输入,输出一行,包含一个整数,表示卡上可能的最小余额。
     

    Sample Input
    1
    50
    5
    10
    1 2 3 2 1 1 2 3 2 1
    50
    0
     

    Sample Output
    -45
    32
     思路:0-1背包
    注意事项:本题算法没什么问题,但是关键在没有考虑到一种特殊情况,如果起始余额<5元,那么就只能直接输出
    该值,,,特殊情况真的很重要啊啊!!!
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int c[1001],dp[1001];
    int main()
    {
       int n,mey;
       while(~scanf("%d",&n)&&n)
       {
           int maxn=0;
           memset(dp,0,sizeof(dp));
           for(int i=1;i<=n;i++)
             {
                 cin>>c[i];
                 if(c[i]>=maxn)
                   maxn=c[i];
             }
           for(int i=1;i<=n;i++)
           {
               if(c[i]==maxn)
               {
                   c[i]=0;
                   break;
               }
           }
           cin>>mey;
           if(mey<5)
              cout<<mey<<endl; //!!!!!!!!!!!!!!!这个判断很重要,就卡在了这里
          else
            {
           for(int i=1;i<=n;i++)
              for(int j=mey-5;j>=c[i];j--)
                dp[j]=max(dp[j],dp[j-c[i]]+c[i]);
           cout<<mey-dp[mey-5]-maxn<<endl;
            }
       }
       return 0;
    }

  • 相关阅读:
    几个新角色:数据科学家、数据分析师、数据(算法)工程师
    人类投资经理再也无法击败电脑的时代终将到来了...
    Action Results in Web API 2
    Multiple actions were found that match the request in Web Api
    Routing in ASP.NET Web API
    how to create an asp.net web api project in visual studio 2017
    网站漏洞扫描工具
    How does asp.net web api work?
    asp.net web api history and how does it work?
    What is the difference between a web API and a web service?
  • 原文地址:https://www.cnblogs.com/smilesundream/p/6642568.html
Copyright © 2011-2022 走看看