[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! 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

Source

浙江工业大学第四届大学生程序设计竞赛

解题思路:

一个人可以单独买票花费一定的时间,也可以两个人一起买票,也给定一个时间,给出K个人的单独买票时间和K-1个相邻的两个人一起买票的时间,问一共花费的最小时间。

用sin[i]为每个人单独买票的时间,dou[ i+1]为两个人一起买票的时间。

状态转移方程为: dp[i] = min(dp[i-1]+sin[i] , dp[i-2] + dou[i] )。当前第i个人分为两种情况,一是单独买,而是和前面的一块买。

代码:

#include <iostream>
#include <iomanip>
#include <algorithm>
#include <stdio.h>
#include <string.h>
using namespace std;
const int maxn=2005;
int dp[maxn];
int sin[maxn];//每个人单独买票时间
int dou[maxn];//相邻两个人一块买票时间
int n,k;

int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&k);
        for(int i=1;i<=k;i++)
            scanf("%d",&sin[i]);
        for(int i=2;i<=k;i++)
            scanf("%d",&dou[i]);
        dp[0]=0;
        dp[1]=sin[1];
        for(int i=2;i<=k;i++)
            dp[i]=min(dp[i-1]+sin[i],dp[i-2]+dou[i]);
        int h=dp[k]/3600+8;
        int m=dp[k]/60%60;
        int s=dp[k]%60;
        if(h>12)
            cout<<setiosflags(ios::fixed)<<setw(2)<<setfill(‘0‘)<<h<<":"<<setw(2)<<m<<":"<<setw(2)<<s<<" pm"<<endl;
        else
            cout<<setiosflags(ios::fixed)<<setw(2)<<setfill(‘0‘)<<h<<":"<<setw(2)<<m<<":"<<setw(2)<<s<<" am"<<endl;
    }
    return 0;
}

[ACM] hdu 1260 Tickets (动态规划),布布扣,bubuko.com

时间: 2024-12-24 03:02:17

[ACM] 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]

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,

H - Tickets HDU 1260 (动态规划)

H - Tickets Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1260 Description Jesus, what a great movie! Thousands of people are rushing to the cinema. However, this is really a tuff time for Joe who sel

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

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

[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