题目链接:uva 672 - Gangsters

题目大意:给出n,K,T,表示一个酒店将要有n位客人到来,然后给出每个客人的ti,表示在ti时刻第i位客人来到酒店,ti ≤ T;再给出pi,表示第i位客人进入酒店为酒店带来的收益;接着是si,表示第i位客人要进入酒店需要将门开到正好si的大小。酒店的门每时刻可以增加1,减少1或不动,问说酒店的收益最大值。

解题思路:dp[i]表示第i位客人在si的时刻进入酒店的最大收益,现将所有客人按照达到酒店的顺序排序,然后对于每个客人i,考虑dp[j](j<i)最大值,注意这里是第i位客人进入酒店的最大收益,不一定dp[n]就是最优解,所以过程要维护最优解ans。还有注意也许第j为客人进入后,剩余的时间无法让门变成满足i位客人进入的条件时不能考虑,以及第j位客人根本不能进入的情况。

#include <stdio.h>
#include <string.h>
#include <algorithm>using namespace std;
const int N = 105;
struct state {int t, p, s;
}g[N];
int n, K, T, dp[N];bool cmp(const state& a, const state& b) {return a.t < b.t;
}void init () {scanf("%d%d%d", &n, &K, &T);for (int i = 1; i <= n; i++) scanf("%d", &g[i].t);for (int i = 1; i <= n; i++) scanf("%d", &g[i].p);for (int i = 1; i <= n; i++) scanf("%d", &g[i].s);sort(g + 1, g + n + 1, cmp);g[0].t = 0; g[0].s = 0;memset(dp, -1, sizeof(dp));
}int solve() {dp[0] = 0;int ans = 0;for (int i = 1; i <= n; i++) {for (int j = 0; j < i; j++) {if (dp[j] == -1) continue;int u = g[i].t - g[j].t;int l = max(0, g[j].s - u), r = min(K, g[j].s + u);if (g[i].s >= l && g[i].s <= r) {dp[i] = max(dp[i], dp[j] + g[i].p);}}ans = max(dp[i], ans);}return ans;
}int main () {int cas;scanf("%d", &cas);while (cas--) {init();printf("%d\n", solve());if (cas) printf("\n");}return 0;
}

uva 672 - Gangsters(dp)相关推荐

  1. uva 672 Gangsters( dp )

    本文出自   http://blog.csdn.net/shuangde800 题目: 点击打开链接 题目大意: 有个酒店的门会改变尺寸,变化范围是[0,k],这个门每秒钟尺寸可以变大1,可以减小1, ...

  2. uva 672 Gangsters

    题意:就是有N个人,有一个P值和一个S值,然后商店有一个K值,当这个人来的时候如果K和S相等,则进去,则总P加上该人的P值,每秒K可以+1或者-1或者不变. 思路:先按时间排序.d[i]表示第i个人进 ...

  3. Placing Lampposts ,UVa 10859 树形dp

    UVa 10859 日常刷白书,第三次刷dp刷到这题,竟然还是不会写..... 这个题给定n个点m条边的无向无环图,有至多1000个节点,每个节点有两个状态,可以放灯或者不放灯,要求放最少的灯使得所有 ...

  4. uva 10118(DP)

    UVA 10118 题意: 有4堆糖果,每堆有n(最多40)个,有一个篮子,最多装5个糖果,我们每次只能从某一堆糖果里拿出一个糖果, 如果篮子里有两个相同的糖果,那么就可以把这两个(一对)糖果放进自己 ...

  5. 【UVa】【DP】1633 Dyslexic Gollum

    UVa 1633 Dyslexic Gollum 题目 ◇题目传送门◆(由于UVa较慢,这里提供一份vjudge的链接) ◇题目传送门(vjudge)◆ 题目大意 输入正整数N,KN,KN,K,求长度 ...

  6. uva 1424 - Salesmen(dp)

    题目链接:uva 1424 - Salesmen 题目大意:给定一个包含n个点的无向图和一个长度为L的序列A,要求修改尽量少得数,使得序列中的任意两个相邻数相等或者在途中相邻. 解题思路:dp[i][ ...

  7. UVA 10564 计数DP

    也是经典的计数DP题,想练练手,故意不写记忆化搜索,改成递推,还是成功了嘞...不过很遗憾一开始WA了,原来是因为判断结束条件写个 n或s为0,应该要一起为0的,搞的我以为自己递推写挫了,又改了一下, ...

  8. Uva 11600 期望DP

    题意:n个城市,相互可达(有n(n-1)/2条边),其中有一些道路上面有妖怪,现在,从1号城市出发,随机挑取一个城市走去,这个道路上的妖怪就会被消灭,求: 在平均情况下,需要走多少步,使得任意两个城市 ...

  9. UVa 11762 (期望 DP) Race to 1

    设f(x)表示x转移到1需要的次数的期望,p(x)为不超过x的素数的个数,其中能整除x的有g(x)个 则有(1-g(x)/p(x))的概率下一步还是转移到x,剩下的情况各有1/p(x)的概率转移到x/ ...

最新文章

  1. spfa(还不懂--)
  2. 深入Jetty源码之Servlet框架及实现(AsyncContext、RequestDispatcher、HttpSession)
  3. P1276 校门外的树(增强版)(线段树)(校门三部曲)难度⭐⭐⭐
  4. hive导数据到mysql 自增主键出错_老大问我:“建表为啥还设置个自增 id ?用流水号当主键不正好么?”...
  5. 【计算理论】自动机 示例 ( 自动机示例 | 自动机表示方式 | 自动机计算流程简介 )
  6. 最长回文子串python_最长回文子串(Python)
  7. .NET6下周发布真的香,可不少人却只会.NET Framework!
  8. datatables 自定义按钮及响应点击事件
  9. TensorFlow-JS教程 一、Node.js 设置
  10. Spring中的设计模式学习
  11. 机器学习(八)——SVD推荐系统
  12. JAVA8十大新特性详解
  13. SEM常用的数据统计工具之百度统计
  14. 汉字、图形,Zebra打印机完全解决方案
  15. MD5加密工具类--MD5Utils.java
  16. python制作贺卡代码_用python作元旦贺卡_用AI帮你画新年贺卡:只需输入几个单词,就能模仿大师名做......
  17. 时间间隔感测试器(下):Arduino uno
  18. Unity3D 回合制 网上源码 目前还在研究构思
  19. Android定制属于你自己的导航栏
  20. vue-chartjs画渐变色

热门文章

  1. 脚本修改root密码和命令修改root密码
  2. 【Qt】 Fractal Designer 5.2 - Help(中文版)
  3. mysql表关联_MySQL表关联的几种常用方式
  4. Unity 延时的三种方法
  5. 净现值NPV(Net Present Value)
  6. dds提取工具_多媒体资源提取工具(MultiExtractor)
  7. echarts方形柱状图
  8. 我的世界最新服务器自动打怪,我的世界服务器自动打怪脚本刀剑乱舞图
  9. Java反射invoke报错wrong number of arguments
  10. 软件测试周刊(第49期):什么是大众?大众就是那些一年读书不超过五本的人。