【基礎dp】HDU 1260 Tickets

CN_swords發表於2017-02-23
/*
基礎dp
H - Tickets
時間: 2017/02/23
題意: n個人在買電影票,可以兩個相鄰的一起買,也可以單獨買,給出分別需要的時間,問需要的最短時間
題解: dp[i] 代表前i人的最小花費時間
*/
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
using namespace std;

#define N 2010
#define INF 0x3f3f3f3f

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

相關文章