CF1875A Jellyfish and Undertale
题目描述
Flowey 在 Snowdin 安放了一颗炸弹!
这颗炸弹有一个初始为 $b$ 的倒计时定时器。每过一秒,定时器会减少 $1$。当定时器归零时,炸弹就会爆炸!为了让 Snowdin 的居民有足够的时间撤离,你需要尽可能延迟炸弹爆炸的时间。
你有 $n$ 个工具。每个工具最多只能使用一次。如果你使用第 $i$ 个工具,定时器会增加 $x_i$。然而,由于一个 bug,如果定时器被调整到大于 $a$ 的整数,定时器会被设置为 $a$。
更具体地说,每一秒会按以下顺序发生如下事件:
1. 你可以选择一些(也可以一个都不选)之前未用过的工具。如果你选择了第 $i$ 个工具,并且当前炸弹定时器为 $c$,则定时器会变为 $\min(c + x_i, a)$。
2. 定时器减少 $1$。
3. 如果定时器变为 $0$,炸弹爆炸。
Jellyfish 现在想知道,如果你最优地使用工具,炸弹最多能在多少秒后爆炸。
输入格式
每个测试包含多组测试用例。第一行包含测试用例数 $t$($1 \leq t \leq 2000$)。接下来是每组测试用例的描述。
每组测试用例的第一行包含三个整数 $a$、$b$ 和 $n$($1 \leq b \leq a \leq 10^9$,$1 \leq n \leq 100$)——炸弹定时器的最大值、初始值以及工具数量。
每组测试用例的第二行包含 $n$ 个整数 $x_1, x_2, \dots, x_n$($1 \leq x_i \leq 10^9$)——使用第 $i$ 个工具可以让定时器增加的数值。
注意,所有测试用例中 $n$ 的总和没有限制。
输出格式
对于每组测试用例,输出一个整数,表示炸弹最多能在多少秒后爆炸。
说明/提示
设 $c$ 表示炸弹定时器的当前值。在第一个测试用例中:
- 第 $1$ 秒:选择工具 $1$ 和 $2$,此时 $c=5$;定时器减 $1$,$c=4$。
- 第 $2$ 秒:定时器减 $1$,$c=3$。
- 第 $3$ 秒:定时器减 $1$,$c=2$。
- 第 $4$ 秒:定时器减 $1$,$c=1$。
- 第 $5$ 秒:选择工具 $3$,$c=5$;定时器减 $1$,$c=4$。
- 第 $6$ 秒:定时器减 $1$,$c=3$。
- 第 $7$ 秒:定时器减 $1$,$c=2$。
- 第 $8$ 秒:定时器减 $1$,$c=1$。
- 第 $9$ 秒:定时器减 $1$,$c=0$。炸弹爆炸。
可以证明,没有任何方法能让炸弹在 $9$ 秒后才爆炸。
由 ChatGPT 4.1 翻译