题意:有k种石头,高为hi,在不超过ai的高度下,这种石头可以放置,有ci种这个石头,求这些石头所能放置的最高高度.........

思路:以往的什么硬币种数,最大硬币数之类的,他们的硬币都已经是排好序了的,总是从小到大,但是这个题目不同,它有着最高高度的限制,那么在思考的时候,要得到最优的,那么首先就是要对ai排序......这是贪心,然后就是多重背包了........

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
struct node
{int h;int a;int c;
}s[500];
int dp[50000],num[41000];
int cmp(const node p,const node q)
{return p.a<q.a;
}
int main()
{int n;while(scanf("%d",&n)>0){int maxx=0;for(int i=1;i<=n;i++){scanf("%d %d %d",&s[i].h,&s[i].a,&s[i].c);if(maxx<s[i].a)maxx=s[i].a;}sort(s+1,s+1+n,cmp);memset(dp,0,sizeof(dp));dp[0]=1;for(int i=1;i<=n;i++){memset(num,0,sizeof(num));for(int j=s[i].h;j<=maxx;j++)if(dp[j-s[i].h]&&dp[j-s[i].h]+s[i].h>dp[j]&&dp[j-s[i].h]+s[i].h-1<=s[i].a&&num[j-s[i].h]<s[i].c){dp[j]=dp[j-s[i].h]+s[i].h;//printf("%d %d\n",dp[j],s[i].h);num[j]=num[j-s[i].h]+1;//if(dp[j]==37)//printf("%d\n",num[j]);}}int maxn=0;for(int i=0;i<=maxx;i++)if(maxn<dp[i])maxn=dp[i];printf("%d\n",maxn-1);}return 0;
}

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
struct node
{int h;int a;int c;
}s[500];
int dp[50000],c[5000][2];
int cmp(const node p,const node q)
{return p.a<q.a;
}
int main()
{int n;while(scanf("%d",&n)>0){int cnt=0,maxx=0;for(int i=1;i<=n;i++){scanf("%d %d %d",&s[i].h,&s[i].a,&s[i].c);if(maxx<s[i].a)maxx=s[i].a;}//printf("%d\n",maxx);sort(s+1,s+1+n,cmp);//for(int i=1;i<=n;i++)//printf("%d %d %d\n",s[i].h,s[i].a,s[i].c);for(int i=1;i<=n;i++){int k=1;while(s[i].c-k>0){c[cnt][0]=k*s[i].h;c[cnt++][1]=s[i].a;s[i].c-=k;k*=2;//if(s[i].h==5)//printf("%d %d\n",c[cnt-1][0],c[cnt-1][1]);}c[cnt][0]=s[i].h*s[i].c;c[cnt++][1]=s[i].a;}memset(dp,0,sizeof(dp));dp[0]=1;for(int i=0;i<cnt;i++){for(int j=maxx;j>=c[i][0];j--)if(dp[j-c[i][0]]&&dp[j-c[i][0]]+c[i][0]-1<=c[i][1]&&dp[j-c[i][0]]+c[i][0]>dp[j]){dp[j]=dp[j-c[i][0]]+c[i][0];//printf("%d\n",dp[j]);}}int maxn=0;for(int i=0;i<=maxx;i++)if(maxn<dp[i])maxn=dp[i];printf("%d\n",maxn-1);}return 0;
}

dp之多重背包poj2392相关推荐

  1. ssl1236-逃亡准备【dp之多重背包】

    Description 在<Harry Potter and the Deathly Hallows>中,Harry Potter他们一起逃亡,现在有许多的东西要放到赫敏的包里面,但是包的 ...

  2. 小明打联盟 牛客(背包dp,多重背包)

    链接:https://ac.nowcoder.com/acm/problem/14553 来源:牛客网 题目描述 小明很喜欢打游戏,现在已知一个新英雄即将推出,他同样拥有四个技能,其中三个小技能的释放 ...

  3. 01背包问题、完全背包、多重背包、恰好装满

    01背包问题:最基本的背包问题,每个物品最多只能放一次. 完全背包问题:每种物品可以放无限多次. 多重背包问题:每种物品有一个固定的次数上限. [代码] import java.util.Scanne ...

  4. 最少硬币问题----多重背包

    问题描述: 设有n 种不同面值的硬币,各硬币的面值存于数组T[1:n ]中.现要用这些面值的硬币来找钱.可以使用的各种面值的硬币个数存于数组Coins[1:n ]中.对任意钱数0≤m≤20001,设计 ...

  5. 《dp补卡——多重背包》

    多重背包简介: 有N种物品和一个容量为V的背包.第i种物品最多有Mi件可用,每件耗费的空间为Ci,价值为Wi.求解将哪些物品装入背包可使得这些物品耗费的空间总和不超过背包容量,且价值总和最大. 将Mi ...

  6. POJ 1742 Coins ( 经典多重部分和问题 DP || 多重背包 )

    题意 : 有 n 种面额的硬币,给出各种面额硬币的数量和和面额数,求最多能搭配出几种不超过 m 的金额? 分析 : 这题可用多重背包来解,但这里不讨论这种做法. 如果之前有接触过背包DP的可以自然想到 ...

  7. 【qduoj - 142】 多重背包(0-1背包的另类处理,dp)

    题干: ycb的ACM进阶之路 Description ycb是个天资聪颖的孩子,他的梦想是成为世界上最伟大的ACMer.为此,他想拜附近最有威望的dalao为师.dalao为了判断他的资质,给他出了 ...

  8. hdu 1171 dp(多重背包)

    View Code //hdu 1171 dp(多重背包)//题意:把所有物品的价值尽量分为相等的两份,不能等分的话 //后面那份可以稍小于前面的 //求出价值总和后,令价值的一半为背包容量,让背包尽 ...

  9. 动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包,混合背包

    动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包 01背包 && 完全背包 && 分组背包 の 视频教程:https://www.bilibi ...

最新文章

  1. php内核探索方法与资源
  2. 一款好用的JS时间日期插件layDate
  3. Android N 新特性 + APP开发注意事项
  4. 云计算之路-黎明前的黑暗:20130424网站故障经过
  5. ElasticSearch-6.3.2 linux 安装
  6. linux配置apache不管用,Linux中apache配置文件详解
  7. licens 问题 Error (292028): Specified license is not valid for this machine
  8. 傅盛:认知升级三部曲
  9. 五、网络编程实例:聊天室
  10. axure RP文件如何找回_Axure教程:显示隐藏-灯箱效果-下拉菜单的弹出效果
  11. 组图:释放性感诱惑 内地超级豪放女星大盘点
  12. ubuntu下 分辨率设置
  13. 计算机ifand函数补考科目,Excel函数公式:逻辑函数IF、AND、OR、NOT、IFERROR实用技巧解读...
  14. 演示4:python的币值转换-含tkinter
  15. 根据音乐播放进度实时更新音乐播放器播放进度条
  16. Bentley ORD(openroads designer) 二次开发(BIM)第二节 基础接口分享
  17. VLC可用的模块列表
  18. 初中化学人教版教案四-Leo老师
  19. 70-项目实战后续(课程管理模块)
  20. python两个线程交替执行_python 实现两个线程交替执行

热门文章

  1. 服务器,linux系统配置端口号的坑!!!服务器防火墙配置!!!
  2. NavigationDuplicated vue-router 路由重复点击报错的问题
  3. Microsoft Enterprise Library 5.0 系列(四) Logging Application Block
  4. Bootstrap 3: 菜单居中 Center content in responsive bootstrap navbar
  5. Magento 添加 google font Adding a google fonts into Magento
  6. Largevis算法
  7. 两种最短路径(测地距离)的算法——Dijkstra和Floyd
  8. Tomcat实战-调优方案
  9. 永久把linux系统chrome的user agent 改成win10系统的
  10. LeetCode 61. Rotate List