首页 > 其他 > 详细

HDU 1260 Tickets

时间:2016-01-17 21:24:46      阅读:249      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!