HDU 2546 饭卡(01背包)
来源:互联网 发布:获取js对象的方法 编辑:程序博客网 时间:2024/06/05 03:30
题目链接:
HDU 2546 饭卡
题意:
中文题意。
分析:
问题的核心就是在钱总数小于5之前尽可能的使金钱总数最小,然后用生下的>=5的钱去购买最贵的物品。
先将所有商品按价格排序,然后将最贵的保留,因为一定会购买它!而且最优的情况是用5元钱购买它!
所以问题就变成如何用v-5元钱去购买剩下的n-1件商品来获得最大总价值,这就是典型的01背包了。
注意:
当初始v<5时,什么都不能购买,所以这时候剩余的最小金额还是v。
//46MS 1424K#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int MAX_N=1010;int n,v;int val[MAX_N],dp[MAX_N];int main(){ //freopen("hdu2546in.txt","r",stdin); //freopen("hdu2546out.txt","w",stdout); while(~scanf("%d",&n)&&n){ for(int i=1;i<=n;i++) scanf("%d",&val[i]); scanf("%d",&v); if(v<5) { printf("%d\n",v); continue; } sort(val+1,val+n+1); memset(dp,0,sizeof(dp)); for(int i=1;i<n;i++){ for(int j=v-5;j>=val[i];j--){ dp[j]=max(dp[j],dp[j-val[i]]+val[i]); //printf("i=%d j=%d dp[j]=%d\n",i,j,dp[j]); } } printf("%d\n",v-dp[v-5]-val[n]); } return 0;}
0 0
- 饭卡(hdu-2546)(01背包)
- hdu 2546 饭卡(01背包+贪心)
- HDU 2546 饭卡( 01背包 )
- hdu 2546 饭卡(01背包)
- hdu 2546 饭卡(01背包)
- hdu 2546 饭卡(01背包变形)
- HDU 2546 饭卡 (01背包)
- HDU 2546 饭卡(01背包)
- hdu 2546 饭卡(贪心+01背包)
- hdu 2546 饭卡(01背包)
- HDU 2546 饭卡 (基础01背包)
- HDU 2546 饭卡(01背包问题)
- hdu 2546 饭卡(01背包)
- HDU 2546 饭卡(01背包)
- hdu 2546 饭卡 (01背包)
- HDU 2546 饭卡(01背包)
- HDU 2546 饭卡(01背包)
- HDU 2546 饭卡(01背包)
- 内存分配——深入浅出
- jsp内置对象request中getParameter方法与get/setAttribute方法的区别
- crontab 定时任务
- Js 函数eval() 用法记录
- silktest 2008 下载及破解方法
- HDU 2546 饭卡(01背包)
- Ubuntu14.04 安装Caffe(仅CPU)
- 高端内存——永久映射区(permanet kernel mappings)
- Servlet激活器和缺省Servlet
- Android:ToolBar使用
- 我的h5最佳实践
- 树莓派for Mac 启动
- java 从jar包中读取资源文件
- WinInet, WinHttp, Winsock, ws2_32的区别和联系