AcWing 4553. 卖票

fi 表示对于前 i 个顾客开票所需的最短时间,fi=max{fi1+ai,fi2+bi}

左边表示单选,右边表示一块选。

// #define FILE_INPUT
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

#define rep(i, a, b) for (int i = a, END##i = b; i <= END##i; i++)
#define per(i, a, b) for (int i = a, END##i = b; i >= END##i; i--)

void Init();
void Solve();

signed main() {
    // cin.sync_with_stdio(0);
    // cin.tie(0), cout.tie(0);

    #ifdef FILE_INPUT
        freopen("input.in", "r", stdin);
    #endif

    int T = 1;
    cin >> T;
    while (T--) {
        Init();
        Solve();
    }
    return 0;
}

using LL = long long;
using ULL = unsigned long long;

const int Mod = 1e9 + 7;
const int Inf = 0x3f3f3f3f;
const LL InfLL = 0x3f3f3f3f3f3f3f3f;

const int N = 1e6 + 10;
int f[N], n, a[N], b[N];

void Init() {
}

void Solve() {
    cin >> n;
    rep(i, 1, n) cin >> a[i];
    rep(i, 2, n) cin >> b[i];
    f[1] = a[1];
    rep(i, 2, n) f[i] = min(f[i - 2] + b[i], f[i - 1] + a[i]);
    int s = f[n];
    int mi = s / 60; s %= 60;
    int h = mi / 60 + 8; mi %= 60;
    if (h < 12) printf("%02d:%02d:%02d am\n", h, mi, s);
    else if (h == 12) printf("%02d:%02d:%02d pm\n", h, mi, s);
    else printf("%02d:%02d:%02d pm\n", h - 12, mi, s);
}
posted @   wh2011  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示