AT_arc186_c [ARC186C] Ball and Box
题目描述
球橋和箱木进行一个用球和箱子的游戏。
一开始,球橋有 $M$ 种不同的球,每种球各有 $10^{100}$ 个,箱木有 $10^{100}$ 日元。同时有 $N$ 个箱子,第 $i$ 个箱子的容量为 $V_i$,价格为 $P_i$ 日元。在游戏过程中,箱木可以随时购买任意箱子。
游戏过程中,以下操作会不断重复,直到游戏结束:
1. 球橋选择一种球,递给箱木。
2. 箱木可以选择接收这个球,或者拒绝接收并结束游戏。
3. 如果箱木接收了球,他需要从已购买的箱子中选择一个,将球放入该箱子。
4. 若放入球后的箱子满足以下条件,箱木获得 $1$ 日元,否则游戏结束:
- 箱子中的球的数量不超过该箱子的容量。
- 箱子中的所有球都是同一种类型。
球橋会采取使箱木最终所持金钱尽可能少的最优策略,反之,箱木会采取使自己最终所持金钱尽可能多的最优策略。请问,整个游戏过程中,箱木的所持金钱最多能增加多少?
注意,双方都能看到所有信息。特别地,球橋可以看到每个箱子的容量和价格,以及每个箱子里装了多少、哪种球。并且,箱木的初始资金足够多,不会因为钱不够而无法购买箱子。
对于每个输入文件,需要解答 $T$ 个测试用例。
输入格式
输入以如下格式从标准输入给出。这里 $\mathrm{case}_i$ 表示第 $i$ 个测试用例。
> $T$
> $\mathrm{case}_1$
> $\mathrm{case}_2$
> $\vdots$
> $\mathrm{case}_T$
每个测试用例格式如下:
> $N$ $M$
> $V_1$ $P_1$
> $V_2$ $P_2$
> $\vdots$
> $V_N$ $P_N$
输出格式
请输出在双方都采取最优策略时,箱木最终所持金钱与初始金钱的差值。
说明/提示
### 数据范围
- $1 \leq T, N, M \leq 3 \times 10^5$
- $1 \leq V_i, P_i \leq 10^9$
- 所有测试用例的 $N$ 之和不超过 $3 \times 10^5$
- 所有输入均为整数
### 样例解释 1
第一个测试用例有 $2$ 种球和 $3$ 个箱子。我们把两种球分别叫做白球和黑球,把第 $i$ 个箱子叫做箱 $i$。以下是箱木最终所持金钱增加 $2$ 日元的一个游戏过程示例:
1. 球橋选择白球递给箱木。
2. 箱木接收球,并以 $1$ 日元购买箱 $2$,将白球放入。
- 箱 $2$ 里有 $1$ 个白球,满足条件,箱木获得 $1$ 日元。
3. 球橋选择白球递给箱木。
4. 箱木接收球,将白球放入箱 $2$。
- 箱 $2$ 里有 $2$ 个白球,满足条件,箱木获得 $1$ 日元。
5. 球橋选择黑球递给箱木。
6. 箱木接收球,并以 $1$ 日元购买箱 $3$,将黑球放入。
- 箱 $3$ 里有 $1$ 个黑球,满足条件,箱木获得 $1$ 日元。
7. 球橋选择白球递给箱木。
8. 箱木接收球,将白球放入箱 $2$。
- 箱 $2$ 里有 $3$ 个白球,满足条件,箱木获得 $1$ 日元。
9. 球橋选择白球递给箱木。
10. 箱木选择不接收,游戏结束。
最终,箱 $2$ 里有 $3$ 个白球,箱 $3$ 里有 $1$ 个黑球。箱木总共花了 $2$ 日元,获得了 $4$ 日元,因此所持金钱增加了 $2$ 日元。
第二个测试用例中,球橋可以采取让箱木无法赚钱的策略。
由 ChatGPT 4.1 翻译