H - Tickets
HDU - 1260
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.
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.
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.
2 2 20 25 40 1 8
08:00:40 am 08:00:08 am这题以人数为基准dp 很简单的题
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int INF=0x3f3f3f3f;
int a[2005],b[2005],dp[2005];
int main()
{
// freopen("E:\\file.txt","r",stdin);
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
for(int i=0;i<2005;i++)
dp[i]=INF;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]); //1-n号
}
for(int i=2;i<=n;i++)
scanf("%d",&b[i]);
dp[0]=0;
dp[1]=a[1];
for(int i=2;i<=n;i++)
dp[i]=min(dp[i-1]+a[i],dp[i-2]+b[i]);
int T=dp[n]; //总秒数
int s=T%60;
T=T/60;
int m=T%60;
int h=T/60;
if(h<=4)
printf("%02d:%02d:%02d am\n",h+8,m,s);
//cout<<h+8<<':'<<m<<':'<<s<<" am"<<endl;
else
printf("%02d:%02d:%02d pm\n",h-4,m,s);
}
return 0;
}