动态规划问题:
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int a[2020];
int b[2020];
int dp[2020];
int main()
{
int n;
cin >> n;
while (n--) {
int k;
cin >> k;
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(dp, 0, sizeof(dp));
for (int i = 1; i <=k; i++) {
cin >> a[i];
}
for (int i = 2; i <=k; i++) {
cin >> b[i];
}
int ans = 0;
dp[1] = a[1];
for (int i = 2; i <= k; i++) {
dp[i] = min(a[i] + dp[i - 1], b[i]+dp[i-2]);// 每个i其实表示一个人,要么单独买票,要么两个人一起来
}
ans = dp[k];
//cout << ans << endl;
int h, m, s;
h = ans / 3600;
m = (ans - h * 3600) / 60;
s = (ans - h * 3600 - m * 60);
int rh = 8 + h;
if (rh <12) {
printf("%02d:%02d:%02d am\n", rh, m, s);
}
else {
printf("%02d:%02d:%02d pm\n", rh, m, s);
}
}
return 0;
}