码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 1260 Tickets

时间:2016-01-17 21:24:58      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

dp[i]表示到i这个人所用的最少时间

状态转移方程 dp[i]=min(dp[i-1]+a[i],dp[i-2]+b[i-1]);

最后转换一下时间就可以了,当小时大于等于12的时候显示pm,其余显示am

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;

const int maxn=2000+10;
int T,n;
int a[maxn],b[maxn];
int dp[maxn];

int main()
{
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        memset(dp,0,sizeof dp);
        for(int i=1;i<=n;i++) scanf("%d",&a[i]);
        for(int i=1;i<=n-1;i++) scanf("%d",&b[i]);
        dp[1]=a[1];
        for(int i=2;i<=n;i++)
            dp[i]=min(dp[i-1]+a[i],dp[i-2]+b[i-1]);
        int ss=dp[n]+8*60*60;
        int h=ss/3600;
        ss=ss-h*3600;
        int m=ss/60;
        ss=ss-m*60;
        int s=ss;
        printf("%02d:%02d:%02d ",h,m,s);
        if(h<12) printf("am");
        else printf("pm");
        printf("\n");
    }
    return 0;
}

 

HDU 1260 Tickets

标签:

原文地址:http://www.cnblogs.com/zufezzt/p/5137789.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!