有 N 堆石子,每回合可從一堆取 1 顆,或合併兩堆。Alice 先手,無法操作者負。求獲勝者。通過寫出小規模 NP 狀態表,歸納出獲勝判定規則。
c = 大小為 1 的堆數量。s = 非 1 堆的「步數和」:對每堆大小 x>1,首堆貢獻 x,後續每堆貢獻 x+1(含合併操作)。c\s 0 1 2 3 4 5 0 P N P N P N 1 N N N N N N 2 N P N P N P 3 P N P N P N 4 N P N P N P 規律:c=0 時 s 奇偶決定;c=1 全 N;c=3k 且 s∈{0,2} 為 P。
完整代碼
複雜度
O(N) 每測試用例,極快。
總結
HDU 4111 展示了博弈論中「寫表找規律、歸納證明」的標準范式。關鍵在於識別 1 的特殊性,定義合適的狀態變量 (c,s),並通過小規模枚舉發現週期性規律。代碼極短,但數學洞察深刻。