传送门 限制最多买n件物品的完全背包,二维的完全背包 定义dp[i][j]为最多i忍耐度,打j只怪能获得的最大经验 两种循环顺序都可以 ...
分类:
其他好文 时间:
2017-08-23 15:30:16
阅读次数:
172
安排n个人写m行代码,每个人每行会出a[i]个bug,求最多出现b个bug的方案数。
一个二维的完全背包,每个人有两个状态:写j行代码出k个bug
dp[i][j][k] 前i个程序员写钱j行出现k个bug的方案数。
dp[i][j][k] = dp[i][j-1][k-a[i]] + dp[i-1][j][k];
注意这里数组会超内存,需要用滚动数组。
#include
us...
分类:
其他好文 时间:
2015-05-08 22:03:18
阅读次数:
167
//这题典型的二维背包问题,因为题目说了每种怪的数量无限
//先开始的时候我想定义一个三维的dp,dp[i][j][k]表示前i种
//怪杀死j只剩余耐久点为dp[i][j][k]经验的最大值,然后状态
//方程就可以得到为dp[i][j][k] = max (dp[i-1][j][k],dp[i][j-1][k-b[i]]+a[i]);
//这和完全背包的方程同出一辙,只是最后的答案我却不太清楚...
分类:
其他好文 时间:
2015-04-01 23:56:48
阅读次数:
415
题意:xhd玩游戏,还需要n个经验值升级,还留有m的忍耐度,但是他最多打s只怪,给出k个怪的经验值a[i],以及消耗的忍耐度b[i],问xhd能不能升级--因为有两个限定,忍耐度,和最多打s只怪(即没打一只怪,要消耗1),又因为每只怪有无数只,所以是二维的完全背包--后来写了发现不对(过了样例一直W...
分类:
其他好文 时间:
2015-02-14 16:09:16
阅读次数:
219
二维的完全背包问题。
令dp[i][j]表示当x=i,y=j时的最小代价;
则:
dp[i][j]=min(dp[i][j],dp[i-wx[k]][j-wy[k]]+1);
至于方程的实现则可以仿照一维的背包问题写。
代码如下:
#include
#include
#include
#include
using namespace std;
int dp[33...
分类:
其他好文 时间:
2015-01-24 15:54:03
阅读次数:
244
题目:
链接:点击打开链接
算法:
二维的完全背包;
思路:
状态转移方程:dp[j][m] = max(dp[j][m],dp[j-b[i]][m-1]+a[i]);表示用j的忍耐度杀死m个怪兽能够得到的最大的经验值。
代码:
#include
#include
#include
using namespace std;
int dp[110][110];...
分类:
其他好文 时间:
2014-05-18 03:05:42
阅读次数:
338