DP [HDU 1260] Tickets

Tickets

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 1191    Accepted Submission(s): 559

Problem Description

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.

Input

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.

Output

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.

Sample Input

2
2
20 25
40
1
8

Sample Output

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

简单DP、上代码

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
#define N 10010

int n;
int a[N],b[N];
int dp[N]; //dp[i]表示前i个人花的最少时间

int main()
{
    int T,i;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        for(i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
        }
        for(i=1;i<n;i++)
        {
            scanf("%d",&b[i]);
        }
        dp[1]=a[1];
        dp[2]=min(a[1]+a[2],b[1]);
        for(i=3;i<=n;i++)
        {
            dp[i]=min(dp[i-1]+a[i],dp[i-2]+b[i-1]);
        }
        int h=8,m=0,s=0;
        s=dp[n]%60;
        m=dp[n]/60%60;
        h+=dp[n]/3600;
        if(h<12)
            printf("%02d:%02d:%02d am\n",h,m,s);
        else
            printf("%02d:%02d:%02d pm\n",h,m,s);
    }
    return 0;
}
时间: 2024-10-18 06:59:27

DP [HDU 1260] Tickets的相关文章

【万能的搜索,用广搜来解决DP问题】ZZNU -2046 : 生化危机 / HDU 1260:Tickets

2046 : 生化危机 时间限制:1 Sec内存限制:128 MiB提交:19答案正确:8 题目描述 当致命的T病毒从Umbrella Corporation 逃出的时候,地球上大部分的人都死去了. 麻烦的是,他们并没有真正的死去. 爱丽诗在一个狭窄的巷子中,遇见了n个丧尸(编号1-n),巷子太窄了,爱丽诗只能按顺序解决它们. 爱丽诗擅长用匕首和弓箭,当爱丽诗面临编号为i的丧尸时,匕首每次只能解决一个丧尸用时为a[i],弓箭每次能且只能解决两个相邻的丧尸(丧尸i,和丧尸i+1),用时为b[i].

[2016-03-27][HDU][1260][Tickets]

时间:2016-03-27 22:37:37 星期日 题目编号:[2016-03-27][HDU][1260][Tickets] 遇到的问题:分钟数字,除以60以后还要模60 t / 60 % 60 #include <cstdio> #include <algorithm> using namespace std; typedef long long LL; const int maxk = 2000 + 10; int s[maxk],d[maxk]; int dp[maxk]

[ACM] hdu 1260 Tickets (动态规划)

Tickets Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 4   Accepted Submission(s) : 2 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description Jesus, what a great movie! Thou

HDU 1260 Tickets (动规)

Tickets Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 924    Accepted Submission(s): 468 Problem Description Jesus, what a great movie! Thousands of people are rushing to the cinema. However,

[dp专题]hdu 1260 tickets

Tickets Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1408    Accepted Submission(s): 687 Problem Description Jesus, what a great movie! Thousands of people are rushing to the cinema. However,

hdu 1260 Tickets 【dp】

Tickets Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1258    Accepted Submission(s): 599 Problem Description Jesus, what a great movie! Thousands of people are rushing to the cinema. However

HDU 1260 TICKETS (简单DP)

ickets TimeLimit: 2000/1000 MS (Java/Others)  MemoryLimit: 65536/32768 K (Java/Others) 64-bit integer IO format:%I64d Problem Description Jesus, what a great movie! Thousands of people are rushing to the cinema. However, this is really a tuff time fo

HDU 1260 Tickets(简单DP)

[题意简述]: 输入: 2 2 20 25 40 1 8 输出: 这里的数据依次表示的意思为:第一个2,代表两组数据,然后下面的2表示两个人,如果单买票的话,其中第一个人会花费20S,另一个人会花费25S,如果两人一起买要花费40S(注意这里的两人一起买必须是相挨着的两个人才可以),因为题目是求得是最短的时间是多少,所以输入40S.具体的时间就是: 08:00:40 am 另一个就不再赘述. [分析]:对于求最短的时间,求最优解,我们可以很简单的建立状态转移方程: dp[i] = min(dp[

HDU 1260 Tickets (动态规划)

Tickets Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 12331    Accepted Submission(s): 6096 Problem Description Jesus, what a great movie! Thousands of people are rushing to the cinema. Howeve