HDOJ-2159 FATE
2016-02-22 11:34
323 查看
这道题是二维费用的完全背包问题.两种费用支付的最大值分别为,忍耐度和最多杀怪数.
状态转移方程为: dp[j][h] = max(dp[j][h], dp[j-pa[i]][h-1] + expe[i]);
状态转移方程为: dp[j][h] = max(dp[j][h], dp[j-pa[i]][h-1] + expe[i]);
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <vector> using namespace std; int dp[105][105]; int expe[105], pa[105]; int main() { // freopen("in.txt", "r", stdin); int n, m, k, s; while(cin >> n >> m >> k >> s) { for(int i = 0; i < k; i++) cin >> expe[i] >> pa[i]; memset(dp, 0, sizeof(dp)); for(int i = 0; i < k; i++) for(int j = pa[i]; j <= m; j++) for(int h = 1; h <= s; h++) dp[j][h] = max(dp[j][h], dp[j-pa[i]][h-1] + expe[i]); int maxs = -1; for(int i = 0; i <= m; i++) for(int j = 0; j <= s; j++) { if(dp[i][j] >= n) maxs = max(maxs, m - i); } cout << maxs << endl; } return 0; }
相关文章推荐
- Android性能优化典范
- Mongod参数说明
- Android开发笔记(六十七)嵌入页面的碎片
- C++学习笔记:=操作符的重载实现
- js 使用for循环遍历数组
- JavaSE-网络编程
- squid超时配置解释
- WebService基于Eclipse的客户端代码生成
- HEX和BIN文件的区别
- hidesBottomBarWhenPushed的使用
- ANDROID_MARS学习笔记_S04_006_用获取access_token,access_token_secrect
- 内部类使用时的错误
- mysql删除重复记录并只保留一条
- 处理placeHolder 的图片内容类型
- VS 扩展插件 Web Essentials
- 收藏
- 解决 mysql 数据库 挂掉了
- hdu4552怪盗基德的挑战书&hdu3336Count the string【后缀数组求各前缀重复次数和】
- Response-->cookie的添加和删除
- img 居中显示