博客
关于我
DP - Tickets - HDU - 1260
阅读量:345 次
发布时间:2019-03-04

本文共 1933 字,大约阅读时间需要 6 分钟。

DP - Tickets - HDU - 1260

题意:

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

输入:

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

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

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

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

Sample Input

2220 254018

Sample Output

08:00:40 am08: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 1T10,1n2000,0sSi25s,0sti50s


分析:

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

记 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] if[i]=f[i1]+s[i]

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

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

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

代码:

#include
#include
#include
#include
#include
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;}

转载地址:http://oqor.baihongyu.com/

你可能感兴趣的文章
七 socket编程
查看>>
Vue实现选项卡功能
查看>>
清除默认样式
查看>>
Android Dialog 普通对话框 单选对话框 多选对话框
查看>>
Android 联合ViewPager 与 Fragment
查看>>
2.4 大电路静态工作点的稳定
查看>>
汉诺塔 C++实现【STL stack】
查看>>
数据结构——链表
查看>>
[数据结构与算法]链表逆置与遍历
查看>>
CommonJs
查看>>
Unicode编码和Base64编码
查看>>
html基础
查看>>
ICMP网际控制报文协议
查看>>
[编程题]Course List for Student (25)
查看>>
Python【面向对象】1
查看>>
【Python】面向对象2:之抽象基类:import abc,metaclass=abc.ABCMeta
查看>>
【Python】面向对象,封装
查看>>
接口又是个啥?
查看>>
JS中如何创建对象
查看>>
二叉树的基础练习题代码
查看>>