P6851 onu
题目背景
小 C 和小 D 是好朋友。他们正在尝试一种全新的牌类游戏——onu!
题目描述
为了增加一点趣味性,小 C 和小 D 每人买了 $v$ 颗糖用来当作筹码。
onu 的规则是这样的:
游戏共 $m$ 轮,由两人进行,一位先手,一位后手。在这里,我们默认先手的玩家是小 C,而后手的玩家是小 D。
在最开始时,小 C 会得到 $m$ 张牌,每张牌有其对应的花色、点数。而小 D 会得到 $n$ 张牌。
每一轮开始时,小 C 会打出一张牌,放在桌面上展示给小 D 看。
在此之后,小 D 需要跟牌,即打出他手上的一张牌,且该张牌必须满足其花色与小 C 打出的牌相同。若小 D 没有满足条件的牌或者是他**选择弃权(也就是说,可以选择当前回合是否打出牌)**,弃掉小 C 打出的牌后跳过该轮,视为小 D 败。
在小 D 打出满足要求的牌后,进行一次拼点,也即比较小 C 和小 D 打出的牌的点数:如果小 D 出的牌的点数**大于等于**小 C 的牌的点数,则小 D 胜,否则小 D 败。容易知道,这样不会出现平局的情况。
最后,胜的一方会从败的一方拿走 $c$ 颗糖,且双方均需弃掉打出的牌,并会**再从商店买等于自己打出的牌的点数颗糖**。例如小 C 和小 D 打的点数分别是 $3$ 和 $5$,那么小 C 会去购买 $3$ 颗糖,小 D 购买 $5$ 颗。
为了不破坏两人间的友好关系,不出现一方被另一方完全赢光的情况,他们在最开始买糖时,已经约定好了 $v \ge c \times m$。
现在,小 D 通过一些神秘手段,知道了小 C 在这 $m$ 轮中打出的所有牌,他希望在 $m$ 轮游戏进行之后,让自己的糖数尽量多。你可以帮他找到最优的方案吗?
输入格式
无
输出格式
无
说明/提示
#### 「样例 1 解释」
以 $(a, b)$ 来表示一张花色为 $a$,点数为 $b$ 的牌。
一开始,小 D 有 $4$ 颗糖。小 C 会依次打出 $(1, 6), (3, 5), (1, 4)$ 三张牌。
一种最优的方案是:
第一轮,小 C 打出第一张牌 $(1, 6)$,小 D 打出第二张牌 $(1, 2)$,小 D 负,被拿走 $1$ 颗糖,购买 $2$ 颗糖。此时其有 $5$ 颗糖。
第二轮,小 C 打出 $(3, 5)$,小 D 打出 $(3, 5)$,由于点数**大于等于**小 C 的牌,所以小 D 胜,拿到 $1$ 颗糖,购买 $5$ 颗糖。此时其有 $11$ 颗糖。
第三轮,小 C 打出 $(1, 4)$。由于小 D 在第一轮已经打出过第二张牌 $(1, 2)$ 了,所以没有牌能打,输出 $-1$ 并判小 D 负,被拿走 $1$ 颗糖,此时其有 $10$ 颗糖。
#### 「样例 2 解释」
最开始有 $5$ 颗糖。
第一轮时小 C 打出 $(1, 8)$,小 D 选择弃权,败,于是剩下了 $5 - 1 = 4$ 颗糖;
第二轮时小 C 打出 $(1, 4)$,小 D 打出 $(1, 5)$,胜,得到 $5 + 1$ 颗糖,故最终小 D 有 $10$ 颗糖。
----
#### 「Special Judge 说明」
**请认真阅读输出格式**。
每个测试点仅有 $0$ 分和满分的区别。如果你的输出出现了以下情况,将会被判为 $0$ 分:
- 输出格式不符,如没有正确换行,输出了一些奇奇怪怪的字符等。
- 输出的最优糖果数与标准答案不同。
- 打牌的方案不合法,即不能打出已经弃掉的牌,也不能打出花色与小 C 打出的牌不相同的牌。
- 按照你所输出的方案打完牌后,小 D 的剩余糖果数与你第一行所输出的数字不同。
---
#### 「数据范围」
**本题采用捆绑测试**。
- Subtask 1(10 points):$n, m \le 5$;
- Subtask 2(30 points):$n, m \le 1000$;
- Subtask 3(20 points):$c = 0$;
- Subtask 4(20 points):$a _i = 1$;
- Subtask 5(20 points):无特殊限制。
所有数据保证 $1 \le n, m, a _i, b _i\le 10 ^5$,$0 \le c \le 10 ^5$,$c \times m \le v \le 10 ^{12}$。