首页 > 取石子
头像 白色L号谢谢
发表于 2020-07-07 16:50:11
设d[i][j]表示先手面临两堆石子分别为i,j时的取胜状态。直接求SG函数即可。实际上可以通过值看出来两堆石子和为奇数时候先手必胜,否则后手胜。因为每次取的都为奇数并不会对总的石子数奇偶性造成改变。所以奇数时即会有奇数轮,先手必胜。 #include <bits/stdc++.h> # 展开全文
头像 BaiJay
发表于 2025-10-26 09:06:40
```#include <bits/stdc++.h> #define int long long using namespace std; int stone[3] = {1 ,3 , 9}; signed main() { int n1 , n2 ; while(c 展开全文
头像 baiqiuyue
发表于 2025-12-09 14:44:08
前面几天补了SG函数的知识点就来写一篇题解。 因为两堆石子可以看作两个单独的ICG(公平组合游戏)游戏,这个游戏规则对两个人公平于是我们可以使用sg函数。 我们定义一个函数,对于公平组合游戏来说 ,这个公式意味着从 的状态转移到 状态,也就是找到 可转移集合中没有出现的最小非负整数。其中 。我们一般 展开全文
头像 牛客589873861号
发表于 2025-04-21 11:55:35
#include <bits/stdc++.h> using namespace std; // 记忆化数组,-1 表示未计算,0 表示必胜态,1 表示必败态 int memo[101][101]; int solve(int n1, int n2) { // 如果状态已计算 展开全文