思路:一堆時,n態。兩堆時,當兩堆數量相同,p態,不同為n態。三堆時,先手可以變成兩堆一樣的,必勝n態。
此時可以總結規律:堆數為偶數可能且石子數都是兩兩相同的,為p態。分析四堆時,當四堆中兩兩數量一樣的情況是p態,有一些數量不一樣的情況:x < y < z < k , 可以通過拿k並分配剩下的石子,讓四堆兩兩相同,即轉換為p態。當五堆時,先手一定可以變成四堆並讓四堆中的石子數兩兩相同。
至此,找到規律了:當n為奇數,必勝,當n為偶數且石子數兩兩對應為p態,否則為n態。
ac**
#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;
#define eps 1e-10
#define inf 0x3f3f3f3f
#define pi pairtypedef long long ll;
const int maxn = 100 + 5;
int cnt[maxn];
int main()
if(n & 1) printf("win\n");
else
}if(flag) printf("win\n");
else printf("lose\n");
} }return 0;
}
如有不當之處歡迎指出!
NYOJ 137 取石子(三) 教主神題
時間限制 1000 ms 記憶體限制 1000 kb 難度 6 描述 小王喜歡與同事玩一些小遊戲,今天他們選擇了玩取石子。遊戲規則如下 共有n堆石子,已知每堆中石子的數量,兩個人輪流取子,每次只能選擇n堆石子中的一堆,取一定數量的石子 最少取乙個 取過子之後,還可以將該堆石子中剩下的任意多個石子中隨...
NYOJ 取石子總結
nyoj的取石子有好多道,除了兩道難度為6的,剩下的在這兒簡單總結一下結論。取石子 一 有一堆石子共有n個,a和b輪流取,a先,每次最少取1個,最多取m個,先取完者勝,a,b足夠聰明,問誰先勝?比較簡單的巴什博弈,若n m 1 0,a勝,否則b勝。取石子 七 n個石子擺成一圈,a和b輪流取,每次可以...
NYOJ 取石子(一)
取石子 一 時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 一天,tt在寢室閒著無聊,和同寢的人玩起了取石子遊戲,而由於條件有限,他 她們是用旺仔小饅頭當作石子。遊戲的規則是這樣的。設有一堆石子,數量為n 1 n 1000000 兩個人輪番取出其中的若干個,每次最多取m個 1...