hdu 1260

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

题意:有个人卖票。从8:00:00am开始卖。后面有n个人,每个人卖票需要ki的时间,但是相邻两个人可以合起来买,需要di的时间。问卖票人最早回家的时间。

mark:一个水dp加一个时间的转换。本来可以1A的但是3wa。第一次错是因为小时数忘记处理成不大于12的数字,第二次错是因为把m%=60写成了h%=60,第三次是忘记删除调试语句。都是脑残错误。。。

代码:

 1 # include <stdio.h>
 2 
 3 
 4 int s[2010], d[2010], dp[2010] ;
 5 
 6 
 7 int min(int a, int b){return a<b?a:b;}
 8 
 9 
10 int gao()
11 {
12     int n, i ;
13     scanf ("%d", &n) ;
14     for (i = 1 ; i <= n ;i++)
15         scanf ("%d", &s[i]) ;
16     for (i = 2 ; i <= n ; i++)
17         scanf ("%d", &d[i]) ;
18     for (dp[1] = s[1], i = 2 ; i <= n ; i++)
19         dp[i] = min(dp[i-1] + s[i], dp[i-2]+d[i]) ;
20     return dp[n] ;
21 }
22 
23 
24 void work()
25 {
26     int h = 8, m, s ;
27     s = gao() ;
28     m = s / 60, s %= 60 ;
29     h += m / 60, m %= 60 ;
30     printf ("%02d:%02d:%02d ", (h+11)%12+1, m, s);
31     if (h < 12) puts ("am") ;
32     else puts ("pm") ;
33 }
34 
35 
36 int main ()
37 {
38     int T ;
39     scanf ("%d", &T) ;
40     while (T--) work() ;
41     return 0 ;
42 }

 

posted @ 2013-09-04 01:38  Seraph2012  阅读(448)  评论(0编辑  收藏  举报