首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

HDU 4111 Alice and Bob:石子遊戲博弈論 NP 狀態分析

     編輯:C++ 入門

HDU 4111 Alice and Bob:石子遊戲博弈論 NP 狀態分析

有 N 堆石子,每回合可從一堆取 1 顆,或合併兩堆。Alice 先手,無法操作者負。求獲勝者。通過寫出小規模 NP 狀態表,歸納出獲勝判定規則。

狀態定義

  • 統計 c = 大小為 1 的堆數量。
  • 統計 s = 非 1 堆的「步數和」:對每堆大小 x>1,首堆貢獻 x,後續每堆貢獻 x+1(含合併操作)。

獲勝判定規則

c\s012345
0PNPNPN
1NNNNNN
2NPNPNP
3PNPNPN
4NPNPNP

規律:c=0 時 s 奇偶決定;c=1 全 N;c=3k 且 s∈{0,2} 為 P。

完整代碼


複雜度

O(N) 每測試用例,極快。

總結

HDU 4111 展示了博弈論中「寫表找規律、歸納證明」的標準范式。關鍵在於識別 1 的特殊性,定義合適的狀態變量 (c,s),並通過小規模枚舉發現週期性規律。代碼極短,但數學洞察深刻。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved