DP - Tickets - HDU - 1260
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相关推荐
- Tickets HDU - 1260
Tickets HDU - 1260 题意: 著名的宫崎骏动画片<千与千寻>在中传1500报重映,中传学子有幸成为全国第一批观众.动画学院学生会负责给大家发票,所有的中传同学只要把中传首映 ...
- HDU 1260 Tickets
dp[i]表示到i这个人所用的最少时间 状态转移方程 dp[i]=min(dp[i-1]+a[i],dp[i-2]+b[i-1]); 最后转换一下时间就可以了,当小时大于等于12的时候显示pm,其余显 ...
- 【树形DP】 HDU 2196 Computer
题意:求节点间的最大距离 先DFS一次 记录下 每一节点的子树下的最大距离(DP[ u ] [ 0 ])和第二大距离(DP[ u ] [ 1 ]) 用DP[ v ] [ 2 ] 表示由v的父节点来的最 ...
- 【DP】HDU 2189 悼念512汶川大地震遇难同胞——来生一起走
打一个小于150的素数表 为了分成的组的人数不重复用dp[i][j] 表示 i表示i个人 j表示分成的组内的最大素数序号 #include <stdio.h> #include <s ...
- 【DP】 HDU 3229 Jinyuetuan Puzzle
点击打开链接 题意: 7个键的劲乐团.给出每个键出现要敲打键盘的时间. 然后再给出K个不能同时按的状态 比如 11110000不能按那么11110100也是不能按的.. 对于单音正确的时间敲到得一 ...
- 【递推DP技巧 hdu 2050 折线分割平面】
我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目.比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示. Input ...
- [kuangbin带你飞]专题十二 基础DP1
A - Max Sum Plus Plus (HDU 1024) 题意:将n个数取m段且不相交,求m段数字和最大值: dp[i][j]:前i个数字分成j段的最大值. 边界dp[0][0] = 0; d ...
- HDU - 5542 The Battle of Chibi(树状数组+DP)
UVA - 12983 The Battle of Chibi(树状数组+DP) HDU - 5542 The Battle of Chibi(树状数组+DP) #include<cstdio& ...
- [kuangbin]专题12 基础DP
HDU 1024 Max Sum Plus Plus HDU 1029 Ignatius and the Princess IV HDU 1069 Monkey and Banana HDU 1074 ...
最新文章
- cdn属于一种技术吗
- php未知参数,php – 使用未知数量的参数创建Laravel Eloquent Query
- php直接的模块接口,api(接口)模块
- junit4和junit5_JUnit5 TestSuite替代
- HALCON学习之旅(六)
- 小记:iOS 中一般对于 view 不依赖 model 的的两种代码书写形式
- mysql delphi_delphi 7 连接 MySql
- 永磁同步电机学习(一)
- python输出矩阵_python输出矩阵
- 小心 transmittable-thread-local 的这个坑
- java万年历系统的设计,基于安卓Android平台万年历系统设计与实现
- 扫雷算法实现(简易版,只能在CMD指令中玩)
- docer 设置 拉取http协议的私有仓库
- 李秘书讲写作:我讲写作课你愿意听吗
- php wordpress 代码模板,wordpress模板代码详解
- ORA-15018: diskgroup cannot be created
- TM1637数码管显示 HAL库
- 3、InnoDB存储引擎
- 实现财务自由的重要工具
- Linux基础第二部分。done