uva 672 Gangsters( dp )
来源:互联网 发布:成都广电网络营业厅 编辑:程序博客网 时间:2024/04/29 10:16
本文出自 http://blog.csdn.net/shuangde800
题目: 点击打开链接
题目大意:
有个酒店的门会改变尺寸,变化范围是【0,k】,这个门每秒钟尺寸可以变大1,可以减小1,也可以不变。
现在有n个人,他们的尺寸为si,每个人在ti时刻想要进入酒店,只有在ti时刻酒店门的尺寸恰好和这个人的尺寸大小相等,这个人才可以进入。
每个人有一个值Pi,当某人进入酒店,酒店就会增加Pi值。
在[0,T]这段时间内(0秒时酒店的门尺寸状态是0),求让一些人进入酒店,使得总Pi值最大。
思路:
开始时,以为同一时间两个人不能同时进入,结果WA了很久。 其实如果是同一时间,两个人的尺寸是相同的,门的状态也是相同的,那么两个人可以同时进入。
方法1:
先把所有人按照时间t从小到大排序。
首先,由题意可知,在t秒内,如果要从状态i到j,只有abs(i-j) <= t 才可行
f[i][j]表示: 前i个人,门状态为j时的最大值。
初始化f[0][1..K] = -1, f[0][0] = 0;
f[i][j] = max{ f[i-1][k]+P[i], 当f[i-1][k]!=-1 && 状态k->j可行}
如果j等于S[i],那么f[i][j]还要再加上P[i].
方法1代码:复杂度为O(n*k*k)
方法2:
f[i]表示前i个人取得的最大值
f[i] = max{ f[j]+P[i], 0<=j<i && 第j个人可进入门 && 第j个人的状态到i的状态可达 }
方法2代码:复杂度为O(n^2)
- uva 672 Gangsters( dp )
- UVA 672 - Gangsters(dp)
- uva 672 - Gangsters(dp)
- UVA 672 Gangsters
- uva 672 Gangsters
- UVA - 672 Gangsters(简单dp,正解应该先离散化)
- POJ1036 Gangsters(DP)
- POJ1036 Gangsters DP
- POJ 1036 Gangsters (DP)
- soj 1679 Gangsters(dp)
- POJ 1036 Gangsters DP 多解
- poj 1036 Gangsters(DP)
- poj 1036 Gangsters (简单dp)
- POJ 1036 Gangsters 水dp。。
- POJ 1036 Gangsters(DP)
- poj 1036 Gangsters 简单dp
- POJ 1036 Gangsters(DP)
- POJ 1036 Gangsters DP好题 多解
- 自学java总结----异常处理
- 8月7日
- poj 2352树状数组
- .NET异常处理最佳实践方案
- PaintCode 教程2:自定义进度条
- uva 672 Gangsters( dp )
- hdu 2199 Can you solve this equation?
- Node.js入门
- 微信公会平台自定义菜单
- uva 567
- As3 常用公式
- ubuntu 12.04安装最新版本的nmap出现的几个问题
- Timus 1031. Railway Tickets
- pl/sql返回object类型(STRUCT)给java程序