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 <bits/stdc++.h>
using namespace std;
const int MAXN = 2e3+7;
int n;
int a[MAXN],b[MAXN];
int dp[MAXN];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i = 1 ; i <= n ; ++i)scanf("%d",&a[i]);
for(int i = 2 ; i <= n ; ++i)scanf("%d",&b[i]);
dp[1] = a[1];
for(int i = 2 ; i <= n ; ++i)
{
dp[i] = dp[i-1] + a[i];
dp[i] = min(dp[i],dp[i-2] + b[i]);
}
int ans = 8*3600 + dp[n];
int h = ans/3600;
int m = ans/60%60;
int s = ans%60;
if(ans >= 12*3600)printf("%02d:%02d:%02d pm\n",h>=13?h-12:h,m,s);
else printf("%02d:%02d:%02d am\n",h,m,s);
}
return 0;
}