DP - Tickets - HDU - 1260

题意:

现在有n个人要买电影票,如果知道每个人单独买票花费的时间,还有和前一个人一起买花费的时间,问最少花多长时间可以全部买完票。

输入:

T 组 测 试 样 例 , T组测试样例, T组测试样例,

每 组 包 括 一 个 正 整 数 n , 表 示 排 队 的 人 数 每组包括一个正整数n,表示排队的人数 每组包括一个正整数n,表示排队的人数

接 着 n 个 正 整 数 , 表 示 每 个 人 单 独 买 票 的 时 间 s i 接着n个正整数,表示每个人单独买票的时间s_i 接着n个正整数,表示每个人单独买票的时间si​

最 后 n − 1 个 正 整 数 , 表 示 每 个 人 与 前 一 个 人 一 起 买 票 花 费 的 时 间 t i , i ≥ 2 最后n-1个正整数,表示每个人与前一个人一起买票花费的时间t_i,i\ge 2 最后n−1个正整数,表示每个人与前一个人一起买票花费的时间ti​,i≥2

Sample Input

2
2
20 25
40
1
8

Sample Output

08:00:40 am
08:00:08 am

数据范围:

1 ≤ T ≤ 10 , 1 ≤ n ≤ 2000 , 0 s ≤ S i ≤ 25 s , 0 s ≤ t i ≤ 50 s 1\le T\le 10,1\le n\le 2000,0s\le S_i\le 25s,0s\le t_i\le 50s 1≤T≤10,1≤n≤2000,0s≤Si​≤25s,0s≤ti​≤50s


分析:

对 于 每 个 人 而 言 , 要 么 单 独 购 买 , 要 么 与 前 一 个 人 一 起 购 买 。 对于每个人而言,要么单独购买,要么与前一个人一起购买。 对于每个人而言,要么单独购买,要么与前一个人一起购买。

记 f [ i ] : 表 示 前 i 个 人 购 票 的 最 少 时 间 。 记f[i]:表示前i个人购票的最少时间。 记f[i]:表示前i个人购票的最少时间。

第 i 个 人 单 独 购 买 的 最 少 花 费 : f [ i ] = f [ i − 1 ] + s [ i ] 第i个人单独购买的最少花费:f[i]=f[i-1]+s[i] 第i个人单独购买的最少花费:f[i]=f[i−1]+s[i]

第 i 个 人 与 前 一 个 人 一 起 购 买 的 最 小 花 费 : f [ i ] = f [ i − 2 ] + t [ i ] 第i个人与前一个人一起购买的最小花费:f[i]=f[i-2]+t[i] 第i个人与前一个人一起购买的最小花费:f[i]=f[i−2]+t[i]

状 态 转 移 方 程 在 二 者 中 取 较 小 值 。 状态转移方程在二者中取较小值。 状态转移方程在二者中取较小值。

经 计 算 , 排 队 最 多 耗 时 5000 s < 2 h , 因 此 我 们 不 需 要 担 心 时 间 从 上 午 到 下 午 。 经计算,排队最多耗时5000s<2h,因此我们不需要担心时间从上午到下午。 经计算,排队最多耗时5000s<2h,因此我们不需要担心时间从上午到下午。

代码:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<vector>
#include<queue>using namespace std;const int N = 2010;int f[N], n;
int T;
int s[N], t[N];int main()
{   scanf("%d",&T);while(T--){scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&s[i]);for(int i=2;i<=n;i++) scanf("%d",&t[i]);f[1] = s[1];for(int i=2;i<=n;i++) f[i]=min(f[i-1]+s[i], f[i-2]+t[i]);int sum = f[n];int h = sum/3600, m = (sum%3600)/60, sec = sum%60;h+=8;printf("%02d:%02d:%02d am\n",h,m,sec);}return 0;
}

DP - Tickets - HDU - 1260相关推荐

  1. Tickets HDU - 1260

    Tickets HDU - 1260 题意: 著名的宫崎骏动画片<千与千寻>在中传1500报重映,中传学子有幸成为全国第一批观众.动画学院学生会负责给大家发票,所有的中传同学只要把中传首映 ...

  2. HDU 1260 Tickets

    dp[i]表示到i这个人所用的最少时间 状态转移方程 dp[i]=min(dp[i-1]+a[i],dp[i-2]+b[i-1]); 最后转换一下时间就可以了,当小时大于等于12的时候显示pm,其余显 ...

  3. 【树形DP】 HDU 2196 Computer

    题意:求节点间的最大距离 先DFS一次 记录下 每一节点的子树下的最大距离(DP[ u ] [ 0 ])和第二大距离(DP[ u ] [ 1 ]) 用DP[ v ] [ 2 ] 表示由v的父节点来的最 ...

  4. 【DP】HDU 2189 悼念512汶川大地震遇难同胞——来生一起走

    打一个小于150的素数表 为了分成的组的人数不重复用dp[i][j] 表示 i表示i个人 j表示分成的组内的最大素数序号 #include <stdio.h> #include <s ...

  5. 【DP】 HDU 3229 Jinyuetuan Puzzle

    点击打开链接 题意: 7个键的劲乐团.给出每个键出现要敲打键盘的时间. 然后再给出K个不能同时按的状态  比如  11110000不能按那么11110100也是不能按的.. 对于单音正确的时间敲到得一 ...

  6. 【递推DP技巧 hdu 2050 折线分割平面】

    我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目.比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示. Input ...

  7. [kuangbin带你飞]专题十二 基础DP1

    A - Max Sum Plus Plus (HDU 1024) 题意:将n个数取m段且不相交,求m段数字和最大值: dp[i][j]:前i个数字分成j段的最大值. 边界dp[0][0] = 0; d ...

  8. HDU - 5542 The Battle of Chibi(树状数组+DP)

    UVA - 12983 The Battle of Chibi(树状数组+DP) HDU - 5542 The Battle of Chibi(树状数组+DP) #include<cstdio& ...

  9. [kuangbin]专题12 基础DP

    HDU 1024 Max Sum Plus Plus HDU 1029 Ignatius and the Princess IV HDU 1069 Monkey and Banana HDU 1074 ...

最新文章

  1. cdn属于一种技术吗
  2. php未知参数,php – 使用未知数量的参数创建Laravel Eloquent Query
  3. php直接的模块接口,api(接口)模块
  4. junit4和junit5_JUnit5 TestSuite替代
  5. HALCON学习之旅(六)
  6. 小记:iOS 中一般对于 view 不依赖 model 的的两种代码书写形式
  7. mysql delphi_delphi 7 连接 MySql
  8. 永磁同步电机学习(一)
  9. python输出矩阵_python输出矩阵
  10. 小心 transmittable-thread-local 的这个坑
  11. java万年历系统的设计,基于安卓Android平台万年历系统设计与实现
  12. 扫雷算法实现(简易版,只能在CMD指令中玩)
  13. docer 设置 拉取http协议的私有仓库
  14. 李秘书讲写作:我讲写作课你愿意听吗
  15. php wordpress 代码模板,wordpress模板代码详解
  16. ORA-15018: diskgroup cannot be created
  17. TM1637数码管显示 HAL库
  18. 3、InnoDB存储引擎
  19. 实现财务自由的重要工具
  20. Linux基础第二部分。done

热门文章

  1. 关注认知智能进程 中关村管委会宣传处董长青处长一行赴一览群智调研
  2. 专利申请已经开始公示
  3. 【敏捷5.3】敏捷计划的概念与估算
  4. C#判断上班时间和下班时间(含周末)的方法实现
  5. 苏州大学计算机专业课872考研真题1999~2020含答案解析 网盘分享
  6. WinCDEmu-好用的iso制作和模拟软件
  7. 不容忽视的10个新兴硬件技术
  8. 云计算 python(零基础2)
  9. 巡检机器人迎来新风口,助力打造轨交安全高效新模式
  10. 刻录镜像光盘(为rhel7.2)