完全背包
big up
这个作者很懒,什么都没留下…
展开
-
uva10280
题目大意: 给L升酒,有n个酒瓶,每个酒瓶有个最大容量和最小容量,酒瓶的个数不限。 问最多剩多少毫升酒没有装进去。思路: 完全背包+剪枝 只要问题中含有数量不限且问最多最少问题的都属于完全背包问题。 剪枝 limit=min{min*min/(max-min)}。 对于同一种的瓶子,如果我们用k个瓶子去装酒的话,那么可以装下的酒的范围是[k * min,k max],随着k不断原创 2016-03-08 21:54:05 · 255 阅读 · 0 评论 -
uva10465 完全背包
题目大意: 一个人可以花m分钟吃一种汉堡,可以花n分钟吃另外一种汉堡,问在t时间内最多可以吃几个汉堡 应该尽可能的不浪费时间,如果真的非得浪费时间就用这些时间喝啤酒。输出喝啤酒的时间。思路: 背包+贪心 完全背包代码:#include <iostream>using namespace std;#include <stdio.h>#include <cstring>int dp[10005原创 2016-02-26 17:09:58 · 256 阅读 · 0 评论 -
uva10304(二维完全背包DP)
题目大意: 给出一个n和s,然后给出n组x和y,每组都有无数个,求出最少的x和y使得 x^x + y^y == s^s其中x是选出的所有x的和,y是选出的所有y的和思路: 完全背包。 代码:#include <iostream>using namespace std;#include <cstring>#include <stdio.h>const int INF = 0x3f3f3f3原创 2016-05-15 20:31:41 · 296 阅读 · 0 评论 -
关于硬币组合问题和DP的结合
例题: uva674 uva117 uva562 uva11137题目的大概意思就是给定某些面值的硬币,有无限多个,问有几种组成方法等等。有点类似于完全背包。思路: 利用两层for,第一层枚举出各种不同面值的硬币,第二层枚举题目可能达到的钱的面值。 dp[j + coin[i]] += dp[j]; 表示j + coin[i]组成的方法等于原来的加上可以组成j的方法。代码:#inclu原创 2016-05-18 14:50:19 · 689 阅读 · 0 评论