uva 672 dp
来源:互联网 发布:男生扯领带知乎 编辑:程序博客网 时间:2024/05/12 15:42
UVA 672 - Gangsters
n个歹徒打算打劫一个饭店。饭店的门在[0, k]的范围变化。第i个歹徒在t[i]时刻来到饭店,能打劫到p[i]的钱,但至于门的状态等于s[i]时才能进去打劫。问这n个歹徒最多能拿到多少钱。
(
(
(
(
对歹徒按时间排序。
dp[i]表示第i个歹徒能进去的情况下,前i个歹徒最多能得到多少钱。
枚举在这之前进去的歹徒j如果合理的话
dp[i] = min(dp[j] + A[i].p);
#include <bits/stdc++.h>using namespace std;const int INF = 999999999;const int N = 100 + 5;int M;int n, k, t;int dp[N];struct Node { int t, s, p;}A[N];bool cmp (Node a, Node b) { return a.t < b.t;}int main () { scanf ("%d", &M); while (M--) { scanf ("%d%d%d", &n, &k, &t); for (int i=1; i<=n; i++) { scanf ("%d", &A[i].t); } for (int i=1; i<=n; i++) { scanf ("%d", &A[i].p); } for (int i=1; i<=n; i++) { scanf ("%d", &A[i].s); } sort(A+1, A+1+n, cmp); int ans = 0; fill (dp, dp+n+3, -INF); dp[0] = 0; for (int i=1; i<=n; i++) { for (int j=0; j<i; j++) { if (A[i].t-A[j].t >= abs(A[i].s - A[j].s)) { dp[i] = max(dp[i], dp[j] + A[i].p); } } ans = max(ans, dp[i]); } printf ("%d\n", ans); if (M != 0) printf("\n"); } return 0;}
0 0
- uva 672 Gangsters( dp )
- UVA 672 - Gangsters(dp)
- uva 672 - Gangsters(dp)
- uva 672(dp)
- uva 672 dp
- UVA DP 入门专题
- uva 1424 简单DP
- uva 10192 DP
- UVA dp题目汇总
- UVa 4256 - Salesmen dp
- UVa 10271 - Chopsticks dp
- UVA 1424 - Salesmen (dp)
- UVA 10271 Chopsticks(dp)
- uva 10271 Chopsticks(dp)
- UVA 11584 DP水题
- UVA 1424 DP水题
- UVA 10534 DP+LIS
- UVA 11552 DP水题
- 第二周实践项目1-C++语言中函数参数传递的三种方式(引用作形参)
- matlab再带的插值函数interp1的四种插值方法
- LVS持久连接
- cocos 导入图片 变模糊的解决方法
- Redis和Memcache的区别总结
- uva 672 dp
- 黑马程序员-----Java基础
- oracle清理oracle空间
- pdf中如何更改文字的颜色
- C语言中可变参数函数实现原理
- hibernate 常见问题一览
- 四则运算-逆波兰表达式
- 为打开新Activity动作添加动画效果
- python 抓取google play 各搜索词排名