HDU 1260 Tickets 简单DP

来源:互联网 发布:sqlserver 1326 编辑:程序博客网 时间:2024/06/04 23:24

传送门:HDU 1260 Tickets

分析:
一道简单的DP题,代码思路简单清晰。注意时间转化。不然WA。

代码如下;

#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;#define INF 0x3f3f3f3f#define ms(x, y) memset(x, y, sizeof(x))const double PI = acos(-1.0), eps = 1e-8;int main() {    int N,K[2002],kk[2002],dp[2002],n; // dp[i] 前i个人花的最短的时间    scanf("%d",&N);    while(N--) {        scanf("%d",&n);        ms(dp, 0);        for(int i=1; i<=n; i++)            scanf("%d",K+i);        dp[1] = K[1];        for(int i=2; i<=n; i++)            scanf("%d",kk+i);        for(int i=2; i<=n; i++)            dp[i] = min(dp[i-1] + K[i], dp[i-2] + kk[i]); // (两种抉择),对于第i个人,是单独缴费还是选择和前一个人一起缴费        // 转化成时间        int h = dp[n] / 3600;        int m = (dp[n] % 3600) / 60;        // int s = dp[n] - h*3600 - m*60;        int s = dp[n] % 60;        printf("%02d:%02d:%02d %s\n",(8+h)%24,m,s,(8+h)%24<12?"am":"pm");    }    return 0;}
1 0
原创粉丝点击