题目如下
http://acm.hdu.edu.cn/showproblem.php?pid=1260
题比较简单
动态规划。对于每一个时刻
他只有选择跟前一个一起或者他自己的机会。这个时候不用考虑他的下一个emmm
#include<stdio.h>
#include<string.h>
int h,m,s;
int pd;//1代表am
bool blh,blm,bls;
void time(int t){
pd=1;
h=t/3600;
t=t%3600;
m=t/60;
t=t%60;
s=t;
h=h+8;
if(h==12) pd=2;
else if(h>12){h=h%12;pd=2;}
}
int main()
{
int n,k,dp[3000],one[2000],two[2000];
scanf("%d",&n);
int x=n;
while(x--)
{
h=0;m=0;s=0;pd=1;blh=true,blm=true,bls=true;
memset(one,0,sizeof(one));
memset(two,0,sizeof(two));
memset(dp,0,sizeof(dp));
scanf("%d",&k);
for(int i=1;i<=k;i++)
scanf("%d",&one[i]);
for(int i=1;i<=k-1;i++)
scanf("%d",&two[i]);
dp[1]=one[1];
for(int i=2;i<=k;i++)
dp[i]=(dp[i-1]+one[i]<dp[i-2]+two[i-1])?dp[i-1]+one[i]:dp[i-2]+two[i-1];
time(dp[k]);
if(h>=10) printf("%d:",h);
else printf("0%d:",h);
if(m>=10) printf("%d:",m);
else printf("0%d:",m);
if(s>=10) printf("%d ",s);
else printf("0%d ",s);
if(pd==1) printf("am\n");
else printf("pm\n");
}
return 0;
}