![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
boyi算法
算法
QingQingDE23
这个作者很懒,什么都没留下…
展开
-
AcWing 894 拆分-Nim游戏 题解 (博弈论)
#include<iostream> #include<cstring> #include<unordered_set> using namespace std; const int N = 110; int f[N];//记录每个数量的石子的sg值 int eg(int x){ if(f[x] != -1) return f[x];//如果x的eg值已经被计算过,直接返回 unordered_set<int> S; for(int i原创 2021-09-15 12:12:05 · 95 阅读 · 0 评论 -
AcWing 892 台阶-Nim游戏 题解 (博弈论)
思路:只考虑奇数台阶上的石子,就是一个普通Nim游戏,最后面对的必胜状态是所有台阶中就剩第一级台阶还有一个石子,拿走,对手必输,此时左右奇数台阶上的石子数量异或和是 !=0,所以面对的奇数级台阶上的石子数量异或和为0就是必败状态,不考虑偶数级台阶是因为对手可以从偶数级台阶往奇数级台阶拿石子维持必胜状态,所以如果开局时,奇数级台阶上的石子数量异或和为奇数,则先手必胜,否则必败 #include<iostream> using namespace std; int main() { in原创 2021-09-15 11:05:19 · 97 阅读 · 0 评论 -
AcWing 893 集合-Nim游戏 题解 (博弈论)
#include<iostream> #include<cstring> #include<algorithm> #include<unordered_set> using namespace std; const int N = 110, M = 1e4 + 10; int n, m; int s[N], f[M];//s[]表示集合中的数,f[]表示一堆石子数量的sg值 int sg(int x){//计算x的sg值,sg[x]表示一个集合中不.原创 2021-09-14 23:01:17 · 124 阅读 · 0 评论 -
AcWing 891 Nim游戏 题解 (博弈论)
#include<iostream> using namespace std; int main() { int n; cin>>n; int res = 0; while(n -- ){ int a; cin>>a; res ^= a; } if(res) puts("Yes"); else puts("No"); return 0; }原创 2021-09-14 16:33:56 · 79 阅读 · 0 评论