博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
01背包变形
阅读量:4968 次
发布时间:2019-06-12

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

普遍认为华中校园里有无数树木。

现在HUST得到了一块容量为C的大土地种植树木。我们有n棵树可以种植在里面。每棵树使HUST变得美丽,这是由树的价值决定的。另外每个树有一个区域的成本,这意味着我们需要的费用C
的土地,厂房面积。
我们知道所有树木的成本和价值。现在,HUSTers想要最大化土地上种植的树木的价值。你能帮助他们吗?

输入描述:

有多种情况。 第一行是一个整数T(T≤10),它是测试用例的数量。 对于每一个测试情况下,第一线路是两个数n(1≤n≤100)和C(1≤C≤10 ),种子的数量和土地的容量。然后接下来的n行,每行包含两个整数Ç

(1≤C

≤10

6

)和v

(1≤v

≤100),空间和成本的第i个树的值。

输出描述:

对于每种情况,输出一个整数,这意味着可以在土地上种植的树木的最大值。

示例1

输入

13 105 105 104 12

输出

22 题目大意 题目意思就是一个01背包问题,但是它的数据是10的八次方,所以不能直接套用模板,这题需要做相应的变换 本来01背包需要创建一个二维数组 ,然后把重量进行dp,算出在当前重量所能达到的最大价值,但是会爆内存, 所以换了个思想,我dp每个价值能获得的最小重量,然后判断是否是小于输入给的那个限定重量即可;
#include
#include
#include
#include
const int MAX = 1e2 + 5;const int MAXSIZE = 0x3f3f3f3f;using namespace std; int t, n, C, v[MAX], c[MAX];int main(){ int dp[10005]; int maxV; scanf("%d", &t); while (t--) { memset(dp, MAXSIZE, sizeof(dp)); maxV = 0; scanf("%d %d", &n, &C); for (int i = 0; i < n; i++) { scanf("%d %d", &c[i], &v[i]); maxV += v[i]; } dp[0] = 0; for (int i = 0; i < n; i++) { for (int j = maxV; j >= v[i]; j--) { dp[j] = min(dp[j], dp[j - v[i]] + c[i]); } } for (int i = maxV; i >= 0; i--){ if (dp[i] <= C){ printf("%d\n", i); break; } } } return 0;}

 

还有一个运用到滚动数组(可以很大的节省内存),下次贴 借用两个大牛博客 https://www.cnblogs.com/GNLin0820/p/6434693.html https://blog.csdn.net/u012965373/article/details/52180788 通过这题熟练了01背包,加深了dp思想
 

转载于:https://www.cnblogs.com/Lis-/p/8998575.html

你可能感兴趣的文章
[USACO4.1]麦香牛块Beef McNuggets 题解报告
查看>>
frame.origin.x 的意思和作用?
查看>>
提示系统启动关于误更改/var下诺干的权限问题,导致系统启动提示The System is running in low-graphics mode问题解决 By ACReaper...
查看>>
添加设置Android编程心得-为TextView添加各种样式
查看>>
[Oracle] Data Pump 详细使用教程(1)- 总览
查看>>
Install windows server 2008 on ESXi 5.1, add to domain and config for remote desktop
查看>>
nullnullupdate linux user or root password
查看>>
安装文件Win7 配置 Nutch 1.2
查看>>
绑定域名到JavaWeb项目,由域名直接访问到网站首页
查看>>
移动端重构实战系列3——各种等分
查看>>
产品应该努力提高用户使用的方便性
查看>>
React 附件动画API ReactCSSTransitionGroup
查看>>
Graph cut使用方法
查看>>
C#中静态与非静态方法比较(转)
查看>>
排序算法(四)选择排序
查看>>
redis连接数据库
查看>>
ubuntu频繁死机--独立显卡问题
查看>>
网络流---最大流(Edmond-Karp算法)的学习
查看>>
jvm(13)-线程安全与锁优化
查看>>
网络流24题——太空飞行计划问题(最大权闭合图)
查看>>