CF1895E Infinite Card Game
题目描述
Monocarp 和 Bicarp 正在玩一款卡牌游戏。每张卡牌有两个参数:攻击值和防御值。如果卡牌 $s$ 的攻击值严格大于卡牌 $t$ 的防御值,则称 $s$ 能击败 $t$。
Monocarp 有 $n$ 张卡牌,第 $i$ 张卡牌的攻击值为 $ax_i$,防御值为 $ay_i$。Bicarp 有 $m$ 张卡牌,第 $j$ 张卡牌的攻击值为 $bx_j$,防御值为 $by_j$。
游戏开始时,Monocarp 先手选择一张自己的卡牌并打出。Bicarp 必须用自己的一张能击败该卡牌的卡牌应对。之后,Monocarp 必须用一张能击败 Bicarp 卡牌的卡牌应对。接下来轮到 Bicarp,如此往复。
每当一张卡牌被击败后,它会返回到出牌者手中。这意味着每位玩家始终拥有与游戏开始时相同的卡牌集合。若当前玩家无法用自己的任何卡牌击败对方刚刚打出的卡牌,则游戏结束,该玩家输掉比赛。
如果游戏持续 $100^{500}$ 步,则判为平局。
Monocarp 和 Bicarp 都会采取最优策略。如果某位玩家无论对方如何应对都能获胜,则他会争取胜利。否则,如果他有平局策略,则会争取平局。
你需要计算以下三个值:
- Monocarp 的起手选择中,有多少种会导致 Monocarp 获胜;
- 有多少种会导致平局;
- 有多少种会导致 Bicarp 获胜。
输入格式
第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。
每个测试用例的第一行包含一个整数 $n$($1 \le n \le 3 \cdot 10^5$),表示 Monocarp 的卡牌数量。
第二行包含 $n$ 个整数 $ax_1, ax_2, \dots, ax_n$($1 \le ax_i \le 10^6$),表示 Monocarp 卡牌的攻击值。
第三行包含 $n$ 个整数 $ay_1, ay_2, \dots, ay_n$($1 \le ay_i \le 10^6$),表示 Monocarp 卡牌的防御值。
第四行包含一个整数 $m$($1 \le m \le 3 \cdot 10^5$),表示 Bicarp 的卡牌数量。
第五行包含 $m$ 个整数 $bx_1, bx_2, \dots, bx_m$($1 \le bx_j \le 10^6$),表示 Bicarp 卡牌的攻击值。
第六行包含 $m$ 个整数 $by_1, by_2, \dots, by_m$($1 \le by_j \le 10^6$),表示 Bicarp 卡牌的防御值。
输入的额外约束:所有测试用例中 $n$ 的总和不超过 $3 \cdot 10^5$,$m$ 的总和不超过 $3 \cdot 10^5$。
输出格式
对于每个测试用例,输出三个整数:
- Monocarp 的起手选择中,会导致 Monocarp 获胜的数量;
- 会导致平局的数量;
- 会导致 Bicarp 获胜的数量。
说明/提示
由 ChatGPT 4.1 翻译