CF2068C Ads

题目描述

你在热门平台 YooCube 的观看列表中有 $n$ 个视频。第 $i$ 个视频时长为 $d_i$ 分钟。 YooCube 近期增加了广告投放频率。广告仅会在视频之间播放。当完成一个视频后,若满足以下任一条件则会播放广告: - 自上次广告以来已观看三个视频; - 自上次广告结束已过去至少 $k$ 分钟。 你需要按任意顺序观看这 $n$ 个视频。假设你刚刚观看完一个广告,且视频结束后无需再观看广告。求在最优观看顺序下,你被迫观看的广告数量的最小值。

输入格式

每个测试包含多个测试用例。第一行包含整数 $t$($1 \leq t \leq 100\,000$)——测试用例数量。接下来是各测试用例的描述。 每个测试用例的第一行包含两个整数 $n$ 和 $k$($1 \leq n \leq 100\,000$,$1 \leq k \leq 30\,000$)——观看列表中的视频数量及触发广告的时间参数。 第二行包含 $n$ 个整数 $d_1, d_2, \ldots, d_n$($1 \leq d_i \leq 10\,000$)——各视频的时长。 所有测试用例的 $n$ 之和不超过 $10^6$。

输出格式

对于每个测试用例,输出需要观看的广告数量的最小值。

说明/提示

第一个测试用例中,一种可能的观看顺序为 $4, 1, 8, 2, 5, 6, 7, 3$(对应时长为 $3, 4, 14, 5, 17, 17, 18, 18$)。此顺序下,在前三个视频后需要观看一次广告,随后三个视频后需再观看一次广告。注意观看完所有视频后无需观看广告。 翻译由 DeepSeek R1 完成