题意就是有n个人排队买票,每个人需要的时间是a[i] (1=< i <=N),但是现在可以两个人合买, 合买只能和前面一个人或者后面一个人合买,所用时间已知。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
int dp[2010];
int a[2010];
int b[2010];
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
int k;
memset(dp,0,sizeof(dp));
scanf("%d",&k);
for(int i=1;i<=k;i++)
{
scanf("%d",&a[i]);
}
for(int i=2;i<=k;i++)
{
scanf("%d",&b[i]);
}
dp[1]=a[1];
for(int i=2;i<=k;i++)
{
dp[i]=min(dp[i-1]+a[i],dp[i-2]+b[i]);
}
// printf("%d\n",dp[k]);
int h=8+dp[k]/3600;
int m=dp[k]%3600/60;
int s=dp[k]%60;
if(h>=13)
printf("%02d:%02d:%02d pm\n",h-12,m,s);
else
printf("%02d:%02d:%02d am\n",h,m,s);
}return 0;
}