博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj2392 Space Elevator(多重背包)
阅读量:6184 次
发布时间:2019-06-21

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

题意:
有一群牛要上太空。他们计划建一个太空梯-----用一些石头垒。他们有K种不同类型的石头,每一种石头的高度为h_i,数量为c_i,并且由于会受到太空辐射,每一种石头不能超过这种石头的最大建造高度a_i。帮助这群牛建造一个最高的太空梯。

吐槽:

做练习的时候,连需不需要对数据排序都没分析清楚。。。下次再也不把练习安排在上午了,一般我上午状态极差(┬_┬)

这题由于数据较水,可以直接把多重背包转化为01背包求解,当然由于设定的状态不一样,写法也会不一样滴。

Code1(01背包):

 

#include 
#include
#include
using namespace std;const int maxn= 410;int dp[40010];struct node { int h, a, c; bool operator <(const node& rhs) const { return a< rhs.a; }};node f[maxn];int main(){ int k, n, i, j, ans, maxa; while(~scanf("%d",&n)) { for(i=1; i<=n; i++) { scanf("%d%d%d",&f[i].h,&f[i].a,&f[i].c); } sort(f+1,f+1+n); memset(dp,0,sizeof(dp)); for(i=1; i<=n; i++) { for(k=f[i].c; k>=1; k--){ for(j=f[i].a; j>=f[i].h; j--) dp[j] =max(dp[j], dp[j-f[i].h]+f[i].h); } } maxa = 0; for(j=f[n].a; j>=0; j--) if(maxa

 

Code(多重背包):

 

#include 
#include
#include
#define max(a,b) a>b ? a:busing namespace std;const int maxn= 410;int dp[40010];struct node { int h, a, c; bool operator <(const node& rhs) const { return a< rhs.a; }};node f[maxn];void CompletePack(int C, int W, int V){ for(int i=C; i<=V; i++) dp[i] = max(dp[i],dp[i-C]+W);}void ZeroOnePack(int C, int W, int V){ for(int i=V; i>=C; i--) dp[i] = max(dp[i], dp[i-C]+W);}void MultipliePack(int C, int W, int M, int V){ if(C*M >=V) { CompletePack(C,W,V); return ; } int k=1; while(k
=0; i--) if(maxH < dp[i]) maxH = dp[i]; printf("%d\n",maxH); } return 0;}

 

 

 

转载地址:http://vxsda.baihongyu.com/

你可能感兴趣的文章
Jenkins 部署
查看>>
我的友情链接
查看>>
考虑碰撞的二能级原子和电磁场的相互作用
查看>>
Python 端口扫描 报警
查看>>
VM虚拟机redhat7 不能上网
查看>>
Puppet parser命令参数介绍(八)
查看>>
C# 转义符
查看>>
Spring3配置声明式事务
查看>>
Haproxy做LB负载均衡集群的搭建和配置,可以通过web页面监控web服务器的运行状态...
查看>>
python遍历的三种方式
查看>>
C++ list容器系列功能函数详解
查看>>
SQL全角半角标点互转函数
查看>>
蚂蚁变大象:浅谈常规网站是如何从小变大的
查看>>
服务器LVS配置
查看>>
实战Kibana的日志关键词搜索和日志可视化
查看>>
获取软连接指定的真实文件名
查看>>
mysql优化--触发器和auto_increment
查看>>
Nginx http核心模块的内置变量
查看>>
彻底解决Ubuntu 14.04 重启后DNS配置丢失的问题
查看>>
haproxy负载均衡
查看>>