uva 10163 dp
来源:互联网 发布:最准时时彩数据分析 编辑:程序博客网 时间:2024/06/06 16:32
UVA 10163 - Storage Keepers
公司有N(1 ≤ N ≤ 100)个仓库,需要安保。现在有M(1 ≤ M ≤ 30)个人应聘职位,每个人有个值P[i] (1 ≤ P[i] ≤ 1000);安排第i个人看守k个仓库,则这k个仓库的安全值是
dp[i][j]:表示安排前i个人看守j个仓库能获得的最大的安全值。
考虑第i个人看守了k个仓库,那么前i-1个人需要看守j-k个仓库的最大安全值为dp[i-1][j-k],而后k个仓库的安全值是
dp[i][j] = max(dp[i-1][j], min(dp[i-1][j-k],
由此可以得到最大安全值为s;
要在安全值 >= s的情况下找到最小的花费。
dq[i][j]:表示安排前i个人看守j个仓库在最大的安全值s下的最小花费。
转移同上:
考虑第i个人看守了k个仓库,那么前i-1个人需要看守j-k个仓库的安全值下的花费为dp[i-1][j-k],而后k个仓库的安全值s下的花费是p[i]。当然(
dq[i][j] = min(dq[i-1][j], dp[i-1][j-k] + p[i]);
/*
直接对dp数组路径还原的话总会有一两组数据出错233333
*/
#include <bits/stdc++.h>using namespace std;const int INF = 999999999;int n, m;int p[350];int dp[350][1050];int dq[350][1050];int main () { for (; scanf ("%d%d", &n, &m) == 2; ) { if (n == m && m == 0) break; for (int i=1; i<=m; i++) { scanf ("%d", &p[i]); } memset(dq, 0, sizeof(dq)); memset(dp, 0, sizeof(dp)); for (int i=1; i<=n; i++) { dp[1][i] = p[1] / i; dp[i][0] = INF; } for (int i=2; i<=m; i++) { dp[i][1] = max(dp[i-1][1], p[i]); for (int j=2; j<=n; j++) { dp[i][j] = dp[i-1][j]; for (int k=1; k<=p[i] && k<=j; k++) { dp[i][j] = max(dp[i][j], min(dp[i-1][j-k], p[i]/k)); } } } int ans = dp[m][n]; for (int i=1; i<=n; i++) { if (p[1]/i >= ans) dq[1][i] = p[1]; else dq[1][i] = INF; } for (int i=2; i<=m; i++) { dq[i][1] = dq[i-1][1]; if (p[i]>=ans) dq[i][1] = min(dq[i-1][1], p[i]); for (int j=2; j<=n; j++) { dq[i][j] = dq[i-1][j]; for (int k=1; k<=p[i] && k<=j && p[i]/k >= ans; k++) { dq[i][j] = min(dq[i][j], dq[i-1][j-k] + p[i]); } } } if (ans == 0) dq[m][n] = 0; cout << dp[m][n] << " "; cout << dq[m][n] << endl; } return 0;}*/
0 0
- uva 10163(dp)
- uva 10163 两次Dp
- uva 10163 dp
- 【DP】Uva 10163
- UVA 10163 二次DP
- Storage Keepers - UVa 10163 dp
- UVA 10163 - Storage Keepers(dp)
- UVA 10163 - Storage Keepers(dp)
- UVA 10163 Storage Keepers(dp + 背包)
- uva 10163 Storage Keepers (dp)
- UVA - 10163 - Storage Keepers(两次dp)
- UVA 10163 Storage Keepers(两次DP)
- UVA 10163-Storage Keepers(DP)
- uva 10163 Storage Keepers (DP)
- UVA-10163 Storage Keepers (DP多次)
- UVA 10163 Storage Keepers 两次dp
- UVA DP 入门专题
- uva 1424 简单DP
- [UIImage imageNamed:@"tab_back"]不显示图片的问题解决
- 相关名词
- 使用Maven来管理项目-使用Maven来创建一个Maven项目(二)
- 通过标准的Runtime API(C函数)打印UIKit中UIView的所有变量、属性以及方法
- 最近学的东西是该总结一下了
- uva 10163 dp
- DirectX3D游戏开发七 backface culling(背面剔除)
- 算法杂货铺——分类算法之贝叶斯网络(Bayesian networks)
- ssh远程登录服务器时提示'Permission denied (publickey)'的解决办法
- Android_开源框架_AndroidUniversalImageLoader网络图片加载
- TCP/IP七层协议详解
- ssh 不用密码
- apache和tomcat的区别
- sys密码格式导致OEM备份及数据泵报错