hdu 1260 Tickets(dp)

来源:互联网 发布:毕向东java基础教程 编辑:程序博客网 时间:2024/04/29 06:15

Tickets

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1260

解题思路:

状态转移方程:dp[i] = min(dp[i-1]+单独买花的时间, dp[i-2]+和前面那个人一起买花的时间)

初始状态为dp[1] = 第一个人单独买话的时间。

AC代码:

#include <bits/stdc++.h>using namespace std;const int N = 2005;int s[N],d[N];int dp[N];int main(){    int T;    scanf("%d",&T);    while(T--){        memset(dp,0,sizeof(dp));        int n;        scanf("%d",&n);        for(int i = 1; i <= n; ++i)            scanf("%d",&s[i]);        for(int i = 2; i <= n; ++i)            scanf("%d",&d[i]);        dp[1] = s[1];        for(int i = 2; i <= n; ++i)            dp[i] = min(dp[i-1]+s[i],dp[i-2]+d[i]);        int hh,mm,ss;        hh = dp[n]/3600;        mm = dp[n]%3600/60;        ss = dp[n]%60;        printf("%02d:%02d:%02d%s\n",(8+hh)%24,mm,ss,(hh+8)%24>12?" pm":" am");    }    return 0;}


0 0
原创粉丝点击