原题: ZOJ 3769http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3769一个带有一些限制的背包问题。假设在没有限制的情况下,那么定义:dp[i][j]表示在前 i 类物品中,总的Toughness为 j 的时候最大的伤...
分类:
其他好文 时间:
2014-07-16 20:45:58
阅读次数:
132
01背包问题。
题意是说 你要去偷银行,超过某个概率你就会被抓,然后有N个银行。
每个银行有一定数量的钱,也有会被抓的概率。
算出不会被抓又能偷到的最多的钱。
不过很阴险一道题,说得是被抓的概率。
你需要算逃跑的概率 然后 (1 - 逃跑的概率)= 被抓的概率。
这道题不能用概率去算钱。要用钱来算概率。
#include
#include
...
分类:
其他好文 时间:
2014-07-12 19:29:43
阅读次数:
198
完全背包问题。
我的背包训练第二题。按照背包九讲的步骤来搞。
题意是说给你一些本钱,然后有一些债券可以购买,不同的债券会有不同的利润,在规定年限内,利润要最大。
债券是无限制购买的,(完全背包)获得的利润可以买债券,(背包变大)
每年都可以选择债券,也就是每年都要重新开始,(每年一次)
最后得出你手上的钱有多少。这道题题目中提示了 1000的倍数。但是本钱...
分类:
其他好文 时间:
2014-07-10 21:29:48
阅读次数:
222
(1)方法一,背包问题解法 1 #include 2 using namespace std; 3 #include 4 #include 5 6 //采用背包问题方法,从后向前,最后一个放和不放背包里,注意递归退出条件和sum==n后,没有return而是继续 7 vector a; ...
分类:
其他好文 时间:
2014-07-10 14:32:24
阅读次数:
130
这题目的思路很巧妙,什么情况下剩下的所有物品都放不下呢?就是当前剩余物品中最小的那个也放不下。所以,先把物品按照容量从小到大排序,依次枚举当前背包为放不下的最小物品的情况。
对于当前物品i,必有1到i-1的所有物品都放进去,这时候比i大的物品谁放谁不放是不确定的。转换成0-1背包问题:把前i-1个物品都放进去以后,得到空间为tsum - sum[i-1](前缀和)的包,只要从第i+1到第n个物品...
分类:
其他好文 时间:
2014-07-08 19:47:17
阅读次数:
187
DP 一直是心中痛,不多说了,这个暑假就坑在这上了。
这暑假第一道DP题,01背包问题。
题意是说物品有 重量和价值 ,但你能承受的重量有限,问你能带的最大价值。
这题数组开大点,虽然不知道有啥坑点,但是我数组开得大,直接1A了。
#include
#include
#include
#include
#include
#include
#include
#incl...
分类:
其他好文 时间:
2014-07-08 10:33:09
阅读次数:
229
学习要点: 1、分支限界法与回溯法 2、分支限界法的剪枝搜索策略 3、分支限界法的算法框架: (1)队列式(FIFO)分支限界法 (2)优先队列式分支限界法 4、应用范例: (1)单源最短路径问题 (2)装置问题 (3)布线问题 (4)0-1背包问题 ...
分类:
其他好文 时间:
2014-07-03 19:32:51
阅读次数:
173
本题是背包问题,但是需要转化成背包的。
因为是两个人洗衣服,那么就是说一个人只需要洗一半就可以了,因为不能两个人同时洗一件衣服,所以就成了01背包问题了。
思路:
1 计算洗完同一颜色的衣服需要的总时间totTime
2 利用动态规划背包法求这些衣服能在那些时间点完成
3 求比(totTime+1)/2大的最小时间点
4 得到洗一种颜色衣服的时间,那么继续求下洗一种颜色衣服的时间
5...
分类:
其他好文 时间:
2014-07-01 14:22:46
阅读次数:
209
最简单的背包问题了,本题应该除了背包就一个考点了:不能开二维数组。我没开过二维,不过看数据是不可以的。太大了。
做法有两种改进省内存DP:
1 所谓的滚动数组
2 逆向填表
很久没做背包DP,突然觉得这种背包问题很简单了。
下面给出两种解法:
1 calBag()是滚动数组
2 calBag2()是逆向填表
#pragma once
#include
#inclu...
分类:
其他好文 时间:
2014-06-27 08:09:43
阅读次数:
165