hdu2159 FATE----完全背包】的更多相关文章

FATE 这道题和完全背包十分类似,只不过加上了忍耐度这个条件限制,所以很正常的想到用三维数组来模拟.但背包问题优化只有一层循环,这里当然也可以把种类这一层省略.d[i][j]表示杀i只怪耗费忍耐度为j时所能获得的最大经验值.于是里面一个完全背包就好了. const int N=1e2+10; int d[N][N];//d[i][j]表示杀i只怪耗费忍耐度为j时所能获得的最大经验值: int main() { int n,m,k,s; while(~scanf("%d%d%d%d",…
#include <cstring> #include <string> #include <cstdio> #include <cmath> #include <algorithm> #include <vector> #include <queue> #include <map> #define inf 0x3f3f3f3f #define ll __int64 using namespace std; i…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 思路: 定义ans存当前满足条件的消耗的最小的忍耐值(满足条件的忍耐值为在当前消耗的忍耐值的情况下,获得的经验值大于等于n). 定义dp[i][j],表示杀i只怪,消耗j个忍耐值的获得 的最大的经验值, 那么状态转移方程很容易得出:dp[i][j]=max(dp[i][j],dp[i-1][j-c[i]]+v[i]); 代码如下:(如果看不懂,可以先看一下背包九讲) #include<iost…
解题关键:二维约束条件,只需加一维状态即可. 转移方程:$f[j][k] = \max (f[j][k],f[j - w[i]][k - 1] + v[i])$ #include<bits/stdc++.h> #define inf 0x3f3f3f3f using namespace std; typedef long long ll; ],v[]; ][]; int main(){ int n,m,k,s; while(cin>>n>>m>>k>&…
FATE Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7307    Accepted Submission(s): 3371 Problem Description 近期xhd正在玩一款叫做FATE的游戏,为了得到极品装备.xhd在不停的杀怪做任务.久而久之xhd開始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一级. 如今的…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2159 FATE Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) 问题描述 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务.久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一级.现在的问题是,xhd升掉最后一级还需n的经验值,xhd还…
主题链接:FATE 状态转移方程: dp[ren][num] =max(dp[ren-耐久值][num-1]+ 经验值,dp[ren][num]) dp表示:当前忍耐度ren下杀敌数为num的经验值 枚举分别枚举 全部怪物种类.耐久度.杀怪数 最后在从小到达枚举消耗的耐久度就可以 #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <…
标准完全背包板子,动态方程为dp[j][x]=max(dp[j][x],dp[j-c[i]][x-1]+a[i]); 其中,dp[j][x]表示花费j点耐心杀x个怪所能得到的最大经验值. 具体代码如下: #include<iostream>#include<string.h>using namespace std;int n,m,i,j,k,s;int a[150],c[150],dp[105][105];int ys=0;int main(){ while(scanf("…
FATE Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 13641    Accepted Submission(s): 6450 Problem Description 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务.久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一级.现在的问…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 思路:完全背包,但有次数的限制,因此,对次数进行dp,判断次数是否超限. #include<iostream> #include<cstdio> #include<cstring> using namespace std; int n,m,k,s; ],vol[],dp[],num[]; int main(void) { int i,j; while(cin>&…