AIGC标识 博弈论

博弈论讲义

以公平组合游戏为主线:P/N 状态、Nim 及其变形、SG 函数与 SG 定理、Wythoff、树与图上的删边游戏、翻硬币、有环图上的胜负平判定;末尾补充非公平博弈的极大极小与对称策略。
建议课时:3 课时(135 分钟)。前置:位运算、基本 DP、DFS。


0. 课前引入

游戏:桌上有 21 颗石子,两人轮流拿,每次拿 1 到 3 颗,拿到最后一颗的人赢。你先手,怎么必胜?

答案:先拿 1 颗剩 20,之后对手拿 \(x\) 你就拿 \(4 - x\),始终让剩余数是 4 的倍数。对手面对 4 的倍数时无论怎么拿都拿不到最后一颗。

这就是博弈论最核心的想法:找到一类"必败局面",证明它满足两条性质

  1. 从必败局面出发,任何一步都走到非必败局面;
  2. 从非必败局面出发,总存在一步走到必败局面。

只要证明了这两条,先手在非必败局面就必胜。本讲所有结论都是这个框架的实例。


1. 公平组合游戏与 P/N 状态

1.1 定义

公平组合游戏(Impartial Combinatorial Game,ICG)满足:

  • 两人轮流行动;
  • 双方在同一局面下可选的行动完全相同(这是"公平"的含义,区别于象棋一方只能动红子);
  • 信息完全公开,无随机;
  • 有限步内结束,无法行动者输(正常规则,Normal Play)。

1.2 P 态与 N 态

  • P 态(Previous player wins):先手必败。
  • N 态(Next player wins):先手必胜。

判定规则(正常规则下):

  1. 没有后继的局面(无法行动)是 P 态。
  2. 存在一个后继是 P 态 \(\implies\) 当前是 N 态。
  3. 所有后继都是 N 态 \(\implies\) 当前是 P 态。

1.3 状态图 DP

任何状态数不大的 ICG 都能直接按定义算:

// win[s] = 局面 s 是否先手必胜
bool solve(State s) {
    if (memo.count(s)) return memo[s];
    for (State t : moves(s))
        if (!solve(t)) return memo[s] = true;   // 有一个后继必败 → 我必胜
    return memo[s] = false;
}

所有博弈题的第一步都是用这段代码打表。 结论是从表里看出来的,不是背出来的。


2. 经典模型

2.1 Bash 博弈

\(n\) 颗石子,每次取 \(1..m\) 颗,取最后一颗者胜。

结论\((m+1) \mid n\) 时先手必败,否则必胜。

证明\(n = 0\) 是 P 态。若 \((m+1) \mid n\),取走 \(x \in [1,m]\) 后余数不为 0;若 \((m+1) \nmid n\),取走 \(n \bmod (m+1)\) 颗即可回到倍数。

变形:每次取 \(a..b\) 颗(剩余不足 \(a\) 颗者无法行动而输)。P 态为 \(n \bmod (a+b) < a\)

2.2 Nim 博弈

\(k\) 堆石子 \(a_1, \dots, a_k\),每次从一堆取任意正数颗,取最后一颗者胜。

结论(Bouton 1901)\(a_1 \oplus a_2 \oplus \cdots \oplus a_k = 0\) 时先手必败,否则必胜。

证明:验证两条性质。

  1. \(S = \bigoplus a_i = 0\),任取一堆改成 \(a_i' < a_i\),则 \(a_i' \ne a_i\),新异或和 \(S' = S \oplus a_i \oplus a_i' = a_i \oplus a_i' \ne 0\)
  2. \(S \ne 0\),设 \(S\) 的最高位为第 \(d\) 位。必存在某堆 \(a_i\)\(d\) 位为 1(否则 \(S\)\(d\) 位为 0)。令 \(a_i' = a_i \oplus S\)。因为第 \(d\) 位由 1 变 0,更高位不变,所以 \(a_i' < a_i\),是合法操作。新异或和 \(S \oplus a_i \oplus a_i' = S \oplus S = 0\)\(\blacksquare\)

构造必胜走法

int s = 0;
for (int x : a) s ^= x;
if (s == 0) { puts("lose"); return; }
for (int i = 0; i < k; i++)
    if ((a[i] ^ s) < a[i]) {           // 这一堆改成 a[i]^s
        printf("take %d from pile %d\n", a[i] - (a[i] ^ s), i);
        break;
    }

2.3 Nim 的变形

(a)Anti-Nim / 反 Nim(洛谷 P4279):取最后一颗者

结论:先手必胜 \(\iff\)(所有堆都是 1 且异或和为 0)或(存在堆 \(> 1\) 且异或和 \(\ne 0\))。

证明思路:全是 1 时结论显然(堆数奇偶)。存在堆 \(>1\) 时:若异或和 \(\ne 0\),按 Nim 策略走,但当只剩一堆 \(>1\) 时把它取成 0 或 1,使剩余 1 的堆数为奇;若异或和 \(=0\),对手总能这样对付你。

(b)阶梯 Nim:台阶从 0 开始编号,第 \(i\) 级有 \(a_i\) 颗石子,每次可把第 \(i\) 级(\(i \ge 1\))的任意正数颗移到第 \(i-1\) 级,无法移动者输。

结论:等价于奇数级台阶上的 Nim,即 \(a_1 \oplus a_3 \oplus a_5 \oplus \cdots\)

理由:对手若移动偶数级台阶上的石子到奇数级,你把同样数量再移下一级到偶数级,奇数级局面不变。所以偶数级石子不影响胜负。

(c)Moore's Nim\(_k\):每次可以从至多 \(k\)各取任意正数颗。

结论:把每堆写成二进制,每一位上的 1 的个数对 \((k+1)\) 取模。全为 0 时先手必败。\(k=1\) 即普通 Nim。

(d)Lasker's Nim(HDU 3032):每次可取任意颗,或把一堆分成两堆非空。

结论(打表得):\(SG(0) = 0\)\(n \bmod 4 \in \{1, 2\}\)\(SG(n) = n\)\(n \bmod 4 = 3\)\(SG(n) = n+1\)\(n \bmod 4 = 0\)\(n>0\))时 \(SG(n) = n-1\)

2.4 Wythoff 博弈

两堆石子 \((a, b)\),每次从一堆取任意颗,或从两堆取相同颗数,取完者胜。

结论:P 态恰为 \(\left(\lfloor k\varphi \rfloor,\ \lfloor k\varphi \rfloor + k\right)\)\(k = 0, 1, 2, \dots\)\(\varphi = \dfrac{1+\sqrt5}{2}\)

前几个 P 态:\((0,0), (1,2), (3,5), (4,7), (6,10), (8,13), (9,15)\)

观察:每个正整数恰好出现在一个 P 态中(Beatty 序列性质),且差 \(b - a = k\) 恰好取遍所有自然数。这保证了从任何非 P 态都能一步到 P 态。

bool isP(ll a, ll b) {
    if (a > b) swap(a, b);
    ll k = b - a;
    ll x = (ll)floorl(k * (1 + sqrtl(5.0L)) / 2);
    return x == a;
}

\(a, b \le 10^{18}\) 时精度要用 long double,或用 \(\varphi\) 的连分数 / 大整数近似。模板:洛谷 P2252。

2.5 斐波那契博弈

一堆 \(n\) 颗石子,先手第一次不能全取,之后每人取的颗数不超过对手上一次的两倍,取完者胜。

结论\(n\) 是斐波那契数时先手必败,否则必胜。

思路:Zeckendorf 定理说任意正整数可唯一表示为若干不相邻斐波那契数之和。必胜策略是每次取掉表示中最小的那一项。

2.6 欧几里得博弈(洛谷 P1290)

两个正整数 \((a, b)\)\(a \ge b\),每次把大数减去小数的正整数倍且结果非负,使一个数变为 0 者胜。

结论:若 \(b \mid a\)\(a \ge 2b\),先手必胜;否则先手只能走到 \((b, a - b)\),递归判断并翻转胜负。

理由\(a \ge 2b\) 时先手可以选择走到 \((b, a \bmod b)\)\((b, a \bmod b + b)\) 之一,两者胜负相反,先手挑对自己有利的。


3. SG 函数与 SG 定理

3.1 定义

\[\text{mex}(S) = \min\{x \in \mathbb{N} : x \notin S\} \]

\[SG(x) = \text{mex}\{SG(y) : x \to y\} \]

终止态 \(SG = 0\)

性质\(SG(x) = 0 \iff x\) 是 P 态。(\(SG = 0\) 说明没有后继 \(SG = 0\),即所有后继都是 N 态;\(SG > 0\) 说明存在后继 \(SG = 0\)。)

3.2 SG 定理(Sprague–Grundy)

若一个游戏由若干独立子游戏组成,每次只能在一个子游戏中行动,则

\[SG(\text{总}) = SG(G_1) \oplus SG(G_2) \oplus \cdots \oplus SG(G_k) \]

证明:与 Nim 的证明完全相同。关键是 \(SG(x) = g\) 意味着 \(x\) 能走到 \(SG\)\(0, 1, \dots, g-1\) 的任何后继(mex 的定义),这正是"一堆 \(g\) 颗石子"的行为。多出来的"走到更大 \(SG\)"的走法对手可以走回来。

意义:任何 ICG 都等价于一堆 \(SG(x)\) 颗石子的 Nim。Nim 是 ICG 的"标准型"。

3.3 计算模板

// 取石子集合 moves = {m1, m2, ...},求 sg[0..n]
int sg[N];
for (int x = 0; x <= n; x++) {
    bool vis[MAXSG] = {};
    for (int m : moves) if (x >= m) vis[sg[x - m]] = true;
    int g = 0; while (vis[g]) g++;
    sg[x] = g;
}

3.4 打表找规律

周期性定理:若取法集合 \(\{m_i\}\) 有限、最大为 \(M\),则 \(SG\) 序列最终是周期的。若从某处起观察到长度 \(p\) 的周期持续了 \(\ge 2M\) 项(保守起见取更长),则周期成立。

:取法 \(\{1, 3, 4\}\)

\(x\) 0 1 2 3 4 5 6 7 8 9
\(SG\) 0 1 0 1 2 3 2 0 1 0

周期 7:\(0,1,0,1,2,3,2\)

讲课提示:让学生现场用 3.3 的代码跑取法 \(\{1,2\}\)\(SG = x \bmod 3\))和 \(\{2,3\}\),练习"从表里读周期"。

3.5 例题:HDU 1848 Fibonacci again and again

三堆石子,每次从一堆取斐波那契数颗。\(SG\) 用 3.3 模板(moves = 斐波那契数),三堆异或。

3.6 例题:洛谷 P2148 [SDOI2009] E&D

\(2n\) 堆两两配对 \((a, b)\),每次选一对,删掉一堆,把另一堆分成两个非空堆组成新的一对。无法操作者输。

结论(打表得):$SG(a, b) = $ 使 \((a-1)\)\((b-1)\) 在该位同时为 0 的最低二进制位编号(从 0 计)。

验证:\((1,1)\) 无法操作,\(0 \mid 0\) 第 0 位为 0,\(SG = 0\)\(\checkmark\) \((2,1)\)\(1 \mid 0 = 1\),第 0 位为 1,第 1 位为 0,\(SG = 1\);实际只能走到 \((1,1)\)\(\text{mex}\{0\} = 1\)\(\checkmark\)

3.7 例题:洛谷 P3185 [HNOI2007] 分裂游戏

\(n\) 个瓶子,每次选 \(i < j \le k\),从 \(i\) 取一颗,往 \(j, k\) 各放一颗。无法操作者输。

分析:每颗豆子独立。位置 \(i\) 的一颗豆子的 \(SG\)

\[SG(i) = \text{mex}\{SG(j) \oplus SG(k) : i < j \le k \le n\} \]

从后往前 \(O(n^3)\) 算。总 \(SG\) = 所有豆子异或 = 奇数颗豆子的位置\(SG\) 异或(偶数颗抵消)。输出字典序最小的必胜走法:枚举 \((i,j,k)\) 检查走后 \(SG\) 是否为 0。

3.8 例题:洛谷 P2575 高手过招

\(20 \times 20\) 棋盘每行独立,每行是一个状态压缩的子游戏(棋子向右移到最近空位)。每行 \(2^{20}\) 状态记忆化 \(SG\),行间异或。


4. 图上的游戏

4.1 树上删边(Green Hackenbush 树版)

有根树,每次删一条边,与根不连通的部分一起消失。无法操作者输。

结论(Colon Principle)

\[SG(u) = \bigoplus_{v \in \text{son}(u)}\left(SG(v) + 1\right) \]

叶子 \(SG = 0\)

理由:一条链(竹子)长 \(k\)\(SG\)\(k\)(每次可以剪到任意更短)。以 \(u\) 为根的各子树独立,子树 \(v\) 加上边 \((u,v)\) 相当于"\(SG(v)\) 的游戏上面多一条边",其 \(SG\)\(SG(v) + 1\)

int dfs(int u, int p) {
    int g = 0;
    for (int v : adj[u]) if (v != p) g ^= dfs(v, u) + 1;
    return g;
}

4.2 有环无向图删边(Fusion Principle)

一般无向图,删边后与根不连通的部分消失。

融合原理:环上所有点可以融合成一个点,环的每条边变成这个点的自环;一个自环等价于一条悬挂边\(SG\) 贡献 1)。于是:

  • 奇环:融合后剩 1 条自环 \(\to\) 等价于一条悬挂边。
  • 偶环:融合后剩 0 条自环 \(\to\) 等价于一个点。

实际实现:Tarjan 找环 / 点双,把环缩成点后按 4.1 做。经典题:POJ 3710 Christmas Game。

4.3 有向图上的棋子游戏

棋子在有向图上,每次沿一条边移动,无法移动者输。

DAG:直接 \(SG(u) = \text{mex}\{SG(v) : u \to v\}\),多个棋子异或。

有环:可能出现平局(双方都不愿走进必败)。用逆拓扑:

// state: 0 未定, WIN, LOSE;deg[u] = 出度;rev 为反图
queue<int> q;
for (int u = 1; u <= n; u++)
    if (deg[u] == 0) state[u] = LOSE, q.push(u);
while (!q.empty()) {
    int v = q.front(); q.pop();
    for (int u : rev[v]) {
        if (state[u]) continue;
        if (state[v] == LOSE) state[u] = WIN, q.push(u);       // 能走到必败 → 必胜
        else if (--deg[u] == 0) state[u] = LOSE, q.push(u);    // 所有后继都必胜 → 必败
    }
}
// 仍为 0 的点:平局

例题:洛谷 P6560 [SBCOI2020] 时光的流逝(多次询问,起点 / 终点集合变化,每次重跑)、CF 1033C Permutation Game。

4.4 例题:洛谷 P4101 [HEOI2014] 人人尽说江南好

\(n\) 堆各 1 颗,每次合并两堆,且堆大小不超过 \(m\)。无法合并者输。

分析:不是计算 \(SG\),而是用对称 / 终局分析:最终局面所有堆都 \(> m/2\)(否则还能合并),总合并次数是确定的奇偶。谁能控制最终堆数的奇偶谁赢。具体:设最终堆数为 \(k\),总操作 \(n - k\) 步。先手希望 \(n-k\) 为奇。分析得答案只与 \(n \bmod 2\)\(m\) 的关系有关。

这类题的教训:不是每道博弈题都要算 SG。 操作总步数固定时,直接数奇偶。


5. 翻硬币游戏

5.1 模型

一排硬币,每次按规则翻转若干枚,要求最右边被翻的那枚必须由正变反。无法操作者输。

核心结论:局面的 \(SG\) = 所有正面硬币位置的 \(SG\) 的异或,其中位置 \(i\)\(SG\) 定义为"只有第 \(i\) 枚正面"时的 \(SG\)

理由:翻转操作把"最右那枚"的正面消掉,同时可能翻其他若干枚。翻其他枚等价于把这些位置的 \(SG\) 异或进来,而 \(x \oplus x = 0\) 说明重复翻等于没翻,所以每个正面硬币可以看成独立子游戏。

5.2 常见规则的位置 SG

规则(每次翻转……) \(SG(i)\)(位置从 1 起)
1 枚 \(1\)
1 或 2 枚 \(i\)
1、2 或 3 枚(Mock Turtles,位置从 0 起) \(2i\)\(\text{popcount}(i)\) 奇,否则 \(2i+1\)
连续 \(k\) 枚(Ruler 游戏) \(\text{lowbit}(i)\)

"翻 1 或 2 枚"就是 Nim:翻第 \(i\) 枚和第 \(j < i\)\(\iff\) 把一堆 \(i\) 变成 \(j\)


6. 非公平与非组合博弈

6.1 极大极小与博弈 DP

双方目标不同(一人求最大一人求最小),或双方可选动作不同,SG 不适用。直接 DP:

\[f(s) = \max_{s \to t}\left(\text{gain} - f(t)\right)\quad\text{或}\quad f(s) = \begin{cases}\max_t f(t) & \text{轮到 A} \\ \min_t f(t) & \text{轮到 B}\end{cases} \]

例题:洛谷 P2734 [USACO3.3] 游戏 A Game。两人轮流从序列两端取数,各自求总和最大。区间 DP:\(f[l][r]\) = 当前玩家在 \([l,r]\) 上能得到的净优势\(f[l][r] = \max(a_l - f[l+1][r],\ a_r - f[l][r-1])\)

6.2 对称策略 / 模仿策略

例题:洛谷 P1288 取数游戏 II:环上 \(n\) 条边有权,棋子在一点,每次沿非零边走并把该边权清零,无法走者输。结论:从起点顺时针 / 逆时针数到第一个 0 边之前的边数,若有一个方向是偶数则先手胜。

一般原则:若局面关于某个中心对称,后手可以永远"复制"先手的操作,则后手必胜;先手若能一步破坏对称并把对称留给自己,则先手必胜。

6.3 策梅洛定理

有限步、双人、轮流、完全信息、无随机的游戏中,必有一方有不败策略。这保证了"必胜 / 必败 / 平局"三分是完备的,4.3 的算法有意义。

6.4 Every-SG(选讲)

规则改为:每次必须在每个还能行动的子游戏中都行动一次。

结论:先手必胜 \(\iff\) 所有子游戏中,必胜子游戏的最大步数 \(\text{step}\) 为奇数。其中

\[\text{step}(x) = \begin{cases} 0 & \text{终止态} \\ \max\{\text{step}(y) + 1 : y \text{ 是 P 态后继}\} & x \text{ 是 N 态} \\ \min\{\text{step}(y) + 1 : y \text{ 后继}\} & x \text{ 是 P 态}\end{cases} \]

直觉:必胜方尽量拖,必败方尽量快结束。例题:HDU 3595 GG and MM。

6.5 不平等博弈(选讲)

红蓝 Hackenbush 一类双方可选动作不同的游戏,用超现实数刻画局面值。竞赛极少出现,知道名词即可。


7. 解题方法论

  1. 确认是不是 ICG:双方动作相同?无随机?正常规则还是反常规则(取最后者输)?
  2. 写暴力打表:用 1.3 或 3.3 的模板算小规模 \(SG\) / 胜负,这一步不能省
  3. 看表猜结论:周期?与二进制有关?与某个数论函数有关(斐波那契、黄金分割)?
  4. 验证结论:用两条性质(P 态走不到 P 态;N 态能走到 P 态)证明,或至少用大范围打表对拍。
  5. 能分解就分解:找独立子游戏,用 SG 定理异或。
  6. 要输出方案:枚举第一步,检查走后 \(SG\) 是否为 0。

8. 常见错误清单

  1. 正常规则与反常规则混淆。 Anti-Nim 的结论与 Nim 完全不同,先看清"取最后者胜 / 负"。
  2. 子游戏不独立却用了 SG 定理。 一次操作影响多个子游戏时不能直接异或。
  3. 阶梯 Nim 数错奇偶级。 地面是第 0 级,第 1、3、5 级参与异或。
  4. Wythoff 精度。 \(10^{18}\) 级别必须用 long double 或整数方法。
  5. 有环有向图直接算 SG。 会死循环或错误,必须用 4.3 的逆拓扑并处理平局。
  6. 树上删边忘记 \(+1\)\(\bigoplus(SG(v) + 1)\),不是 \(\bigoplus SG(v)\)
  7. 翻硬币忘记"最右必须由正变反"。 这条规则保证游戏有限,也是"正面硬币独立"的前提。
  8. 周期没验证够长就下结论。 至少观察 \(2M\) 项以上。
  9. mex 与 max 混淆。 \(SG\) 用 mex,不是取最大值加一。
  10. 总步数固定的题去算 SG。 先看能否直接数奇偶(4.4)。

9. 课堂练习

  1. Bash 博弈 \(n = 20\)\(m = 3\),先手胜负?(答:\(20 \bmod 4 = 0\),必败)
  2. Nim \((3, 4, 5)\),先手胜负?若胜,第一步怎么走?(答:\(3 \oplus 4 \oplus 5 = 2 \ne 0\) 必胜;从 3 的堆取 2 颗变 1,得 \((1,4,5)\),异或为 0)
  3. Wythoff \((3, 5)\)\((4, 6)\) 的先手胜负。(答:\((3,5)\) 必败;\((4,6)\) 必胜)
  4. 取法 \(\{1, 2\}\)\(SG\) 通项。(答:\(x \bmod 3\)
  5. Anti-Nim \((1, 1, 1)\) 先手胜负?(答:全 1 且异或 \(=1 \ne 0\),必败)
  6. 有根树:根 1 连 2 和 4,2 连 3。树上删边先手胜负?(答:\(SG(1) = (SG(2)+1) \oplus (SG(4)+1) = 2 \oplus 1 = 3\),必胜)
  7. 斐波那契博弈 \(n = 13\)\(n = 20\)。(答:13 必败,20 必胜)
  8. 阶梯 Nim,第 0..4 级分别 \(2, 3, 1, 5, 4\) 颗。(答:\(3 \oplus 5 = 6 \ne 0\),必胜)
  9. 证明 Nim 中若 \(S \ne 0\),则恰好存在奇数个 \(i\) 满足 \((a_i \oplus S) < a_i\)
  10. 写出取法 \(\{2, 3\}\)\(SG\) 前 10 项并找周期。(答:\(0,0,1,1,2,0,0,1,1,2\),周期 5)

10. 推荐题单

难度 题目 考点
入门 洛谷 P2197 【模板】Nim 游戏 Nim
入门 洛谷 P1290 欧几里德的游戏 递归胜负
入门 洛谷 P2252 取石子游戏 Wythoff
入门 洛谷 P1288 取数游戏 II 对称策略
基础 洛谷 P4279 [SHOI2008] 小约翰的游戏 Anti-Nim
基础 洛谷 P2734 游戏 A Game 极大极小区间 DP
基础 HDU 1848 Fibonacci again and again SG 模板
基础 HDU 3032 Nim or not Nim Lasker's Nim 打表
基础 洛谷 P2148 [SDOI2009] E&D SG 找规律
提高 洛谷 P3185 [HNOI2007] 分裂游戏 位置 SG + 输出方案
提高 洛谷 P2575 高手过招 状压 SG
提高 洛谷 P4101 [HEOI2014] 人人尽说江南好 终局奇偶
提高 洛谷 P6560 [SBCOI2020] 时光的流逝 有环图胜负平
提高 POJ 3710 Christmas Game 树 / 环删边,融合原理
提高 洛谷 P3235 [HNOI2014] 江南乐 SG + 整除分块优化
挑战 洛谷 P2599 [ZJOI2009] 取石子游戏 非 SG 的区间博弈
挑战 洛谷 P5675 [GZOI2017] 取石子游戏 Nim + 计数 DP
挑战 HDU 3595 GG and MM Every-SG

附录:一页纸总结

\[\text{P 态:无后继,或所有后继为 N 态}\qquad \text{N 态:存在后继为 P 态} \]

\[\text{Bash:}\ (m+1) \mid n \text{ 必败}\qquad \text{Nim:}\ \bigoplus a_i = 0 \text{ 必败}\qquad \text{阶梯 Nim:}\ \bigoplus_{i \text{ 奇}} a_i \]

\[\text{Anti-Nim 先手胜} \iff (\text{全 } 1 \wedge \oplus = 0) \vee (\exists a_i > 1 \wedge \oplus \ne 0) \]

\[\text{Wythoff P 态:}\ (\lfloor k\varphi\rfloor,\ \lfloor k\varphi\rfloor + k)\qquad \text{斐波那契博弈:}\ n \in \text{Fib} \text{ 必败} \]

\[SG(x) = \text{mex}\{SG(y)\},\qquad SG(G_1 + \cdots + G_k) = \bigoplus SG(G_i),\qquad SG = 0 \iff \text{P 态} \]

\[\text{树上删边:}\ SG(u) = \bigoplus_{v}(SG(v) + 1)\qquad \text{融合原理:奇环} \to \text{一条边,偶环} \to \text{一个点} \]

流程:确认 ICG → 暴力打表 → 猜规律 → 两条性质验证 → 分解子游戏异或 → 枚举第一步输出方案。

posted @ 2026-09-20 08:21  ylzqwq  阅读(0)  评论(0)    收藏  举报