博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 2546(01背包)
阅读量:5248 次
发布时间:2019-06-14

本文共 1233 字,大约阅读时间需要 4 分钟。

http://acm.hdu.edu.cn/showproblem.php?pid=2546

 

http://blog.csdn.net/xujinsmile/article/details/7969412

 

首先拿出5元买最贵的东西,那接下来就是背包容量m-5,物品数量n-1 的01背包问题了。

做背包问题一定要明确边界条件再入手,不然很费时间

#include 
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define MEM(a,b) memset(a,b,sizeof(a))#define pf printf#define sf scanf#define debug printf("!\n")#define INF 8000#define MAX(a,b) a>b?a:b#define blank pf("\n")#define LL long long#define ep 1e-6int dp[INF];int ci[INF];//容量int wi[INF];//价值int n,V,i,j,v,t,sum;void zeroOnePack(int cost,int weight){ for(v = V-5;v>=cost;v--) { dp[v] =MAX(dp[v],dp[v-cost]+weight); }}void completePack(int cost,int weight){ for(v = cost;v<=V;v++) { dp[v] =MAX(dp[v],dp[v-cost]+weight); pf("tt%d %d %d\n",i,v,dp[v]); }}int main(){ int t; while(sf("%d",&n) && n) { MEM(dp,0); MEM(ci,0); MEM(wi,0); for(i = 1;i<=n;i++) { sf("%d",&wi[i]); } sort(wi+1,wi+n+1); sf("%d",&V); int m = wi[n]; if(V<5) { pf("%d\n",V); continue; } else { n--; for(i = 1;i<=n;i++) { zeroOnePack(wi[i],wi[i]); } pf("%d\n",V-m-dp[V-5]); } } return 0;}

 

转载于:https://www.cnblogs.com/qlky/p/5034519.html

你可能感兴趣的文章
oracle中anyData数据类型的使用实例
查看>>
软件测试——性能测试总结
查看>>
客户端访问浏览器的流程
查看>>
codeforces水题100道 第二十二题 Codeforces Beta Round #89 (Div. 2) A. String Task (strings)
查看>>
c++||template
查看>>
[BZOJ 5323][Jxoi2018]游戏
查看>>
编程面试的10大算法概念汇总
查看>>
Vue
查看>>
python-三级菜单和购物车程序
查看>>
条件断点 符号断点
查看>>
水平垂直居中
查看>>
MySQL简介
查看>>
设计模式之桥接模式(Bridge)
查看>>
jquery的$(document).ready()和onload的加载顺序
查看>>
Python Web框架Django (五)
查看>>
.net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串------(转)...
查看>>
【codevs1033】 蚯蚓的游戏问题
查看>>
【程序执行原理】
查看>>
python的多行注释
查看>>
连接Oracle需要jar包和javadoc文档的下载
查看>>