您的位置:首页
HDU 1260 Tickets (动规)
2017-08-11 08:45
232 查看
Tickets
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 924 Accepted Submission(s): 468
[align=left]Problem Description[/align]
Jesus, what a great movie! Thousands of people are rushing to the cinema. However, this is really a tuff time for Joe who sells the film tickets. He is wandering when could he go back home as early as possible.
A good approach, reducing the total time of tickets selling, is let adjacent people buy tickets together. As the restriction of the Ticket Seller Machine, Joe can sell a single ticket or two adjacent tickets at a time.
Since you are the great JESUS, you know exactly how much time needed for every person to buy a single ticket or two tickets for him/her. Could you so kind to tell poor Joe at what time could he go back home as early as possible? If so, I guess Joe would full
of appreciation for your help.
[align=left]Input[/align]
There are N(1<=N<=10) different scenarios, each scenario consists of 3 lines:
1) An integer K(1<=K<=2000) representing the total number of people;
2) K integer numbers(0s<=Si<=25s) representing the time consumed to buy a ticket for each person;
3) (K-1) integer numbers(0s<=Di<=50s) representing the time needed for two adjacent people to buy two tickets together.
[align=left]Output[/align]
For every scenario, please tell Joe at what time could he go back home as early as possible. Every day Joe started his work at 08:00:00 am. The format of time is HH:MM:SS am|pm.
[align=left]Sample Input[/align]
2 2 20 25 40 1 8
[align=left]Sample Output[/align]
08:00:40 am 08:00:08 am
[align=left]Source[/align]
浙江工业大学第四届大学生程序设计竞赛
[align=left]Recommend[/align]
JGShining | We have carefully selected several similar problems for you: 1074 1114 1264 1024 1265
解题思路:
一个人能够单独买票花费一定的时间。也能够两个人一起买票。也给定一个时间,
给出K个人的单独买票时间和K-1个相邻的两个人一起买票的时间,问一共花费的最小时间。
map[]表示一个人单独买的时间。v[]表示两个人一起买的时间。
决策就是,这两个人是一起买还是分开买。
代码:0MS
#include <cstdio> #include <iostream> #include <cstring> #include <algorithm> using namespace std; #define M 2050 #define INF 999999 int map[M],v[M],dp[M]; int main() { int i,n,m,t,j,k; while(cin>>t) { while(t--) { cin>>n; for(i=1;i<=n;i++) cin>>map[i]; //单独买票的时间。 for(i=1;i<=n-1;i++) cin>>v[i]; //一起买票的时间。 for(i=0;i<=n;i++) dp[i]=(i==0?0:INF); dp[1]=map[1]; for(i=2;i<=n;i++) { dp[i]=min(dp[i-1]+map[i],dp[i-2]+v[i-1]); //决策。 } int h = dp[n] / 3600 + 8; //将时间转换。 int m = dp[n] / 60 % 60; int s = dp[n] % 60; printf("%02d:%02d:%02d am\n", h, m, s); //没有两位的补足前到零。 } } return 0; }
相关文章推荐
- HDU 1260 Tickets (动规)
- [ACM] hdu 1260 Tickets (动态规划)
- HDU 1260 Tickets(DP)
- hdu 1260 Tickets
- DP-HDU-1260-Tickets
- HDU 1260 Tickets
- hdu 1260 Tickets(DP)
- 【基础dp】HDU 1260 Tickets
- hdu 1260 Tickets 水题dp
- HDU 1260 Tickets (DP)
- HDU 1260 Tickets 简单DP
- HDU 1260 - Tickets
- HDU 1260 Tickets
- HDU 1260 Tickets 【dp】
- HDU 1260 Tickets 找状态方程
- HDU 1260 Tickets
- hdu 1260 Tickets(DP)
- hdu 1260 Tickets
- hdu 1260 Tickets(基础dp)
- HDU - 1260 Tickets (简单DP)