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 }