1、hdu 1260 Tickets

  题意:有k个人,售票员可以选择一个人卖,或者同时卖给相邻的两个人。问最少的售票时间。

  思路:dp[i] = min(dp[i - 1] + singlep[i], dp[i - 2] + dbp[i - 1]);dp[i]表示卖到第i个人后所需最少时间。注意时间为12小时制。

 1 #include<iostream>
 2 #include<memory.h>
 3 #include<algorithm>
 4 using namespace std;
 5 int n, k;
 6 const int maxk = 2100;
 7 int dp[maxk];
 8 int singlep[maxk];
 9 int dbp[maxk];
10 int main()
11 {
12     scanf("%d", &n);
13     while (n--)
14     {
15         scanf("%d", &k);
16         for (int i = 1; i <= k; i++) scanf("%d", &singlep[i]);
17         for (int i = 1; i <= k - 1; i++) scanf("%d", &dbp[i]);
18         memset(dp, 0, sizeof(dp));
19         for (int i = 1; i <= k; i++)
20         {
21             if (i == 1)dp[i] = singlep[i];
22             else
23             {
24                 dp[i] = min(dp[i - 1] + singlep[i], dp[i - 2] + dbp[i - 1]);
25             }
26         }
27         int hh = 8;
28         int mm = 0, ss = 0;
29         hh += dp[k]/3600;
30         mm += dp[k]%3600/ 60;
31         ss += dp[k] % 60;
32         char t1[4] = "am", t2[4] = "pm";
33         printf("%02d:%02d:%02d %s\n", (hh<=12?hh:hh-12), mm, ss, (hh >= 13 ? t2 : t1));
34     }
35     return 0;
36 }
View Code

相关文章:

  • 2022-12-23
  • 2021-05-21
  • 2021-11-13
  • 2021-06-28
  • 2021-09-18
  • 2021-09-27
  • 2022-01-02
猜你喜欢
  • 2022-12-23
  • 2021-08-26
  • 2022-12-23
  • 2021-12-31
  • 2022-01-18
  • 2021-08-07
相关资源
相似解决方案