• Hdu 2546 饭卡(01背包)


    题意: 如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。

    AC代码:

    #include<iostream>

    #include<algorithm>

    using namespace std;

     

    const int maxn = 1000 + 10;

     

    int value[maxn];

    int cost[maxn];

    int dp[maxn][maxn];

     

    int Max(int a, int b){

           return a > b ? a : b;

    }

     

    int main(){

           int n;

           int v;

           while(cin>>n, n){

                  for(int i=1; i<=n; i++){

                         cin>>cost[i];

                         value[i] = cost[i];

                  }

                  sort(cost + 1, cost + n + 1);               //注意条件最后一个只要剩余价值>5就可以放下一个任何一个,所以排序后选择最大价值的一个

                  sort(value + 1, value + n + 1);

                  int max = cost[n];

                  cin>>v;

                  if(v < 5){

                         cout<<v<<endl;

                         continue;

                  }

                  memset(dp, 0, sizeof(dp));

                  for(int i=1; i<=n - 1; i++){                     //二维数组,没有优化空间

                         for(int j=0; j<=v - 5; j++){

                                if(j >= cost[i]){

                                       dp[i][j] = Max(dp[i-1][j - cost[i]] + value[i], dp[i-1][j]);

                                }

                                else

                                       dp[i][j] = dp[i-1][j];

                         }

                  }

                  cout<<v - dp[n- 1][v - 5] - max<<endl;

           }

           return 0;

    }

  • 相关阅读:
    图论基础
    降维和聚类系列(二):拉普拉斯特征映射Laplacian Eigenmaps,谱聚类,实例代码
    降维和聚类系列(一):方法综述和比较(持续更新中)
    markdown设置图片尺寸
    指示向量indicator vector
    Sherlock and his girlfriend CodeForces
    The Meeting Place Cannot Be Changed CodeForces
    The Meeting Place Cannot Be Changed CodeForces
    数组分块入门 3
    数组分块入门 3
  • 原文地址:https://www.cnblogs.com/cbyniypeu/p/3529324.html
Copyright © 2020-2023  润新知