当前位置:网站首页>Game theory acwing 893 Set Nim game
Game theory acwing 893 Set Nim game
2022-07-05 06:24:00 【T_ Y_ F666】
Game theory AcWing 893. aggregate -Nim game
Original link
AcWing 893. aggregate -Nim game
Algorithm tags
Math knowledge Game theory SG function
Ideas
If there is only a pile of stones SG Function calculation
Conclusion
For multiple heaps of stones
SG The value of the function is equal to each sub game it contains SG The exclusive or sum of function values , namely :SG(G) = SG(G1) ^ SG(G2) ^ … ^ SG(Gm), if SG(G) by 0, You will win , otherwise , You will lose
Other concepts
Code
#include<bits/stdc++.h>
#define int long long
#define abs fabs
#define rep(i, a, b) for(int i=a;i<b;++i)
#define Rep(i, a, b) for(int i=a;i>=b;--i)
using namespace std;
const int N = 105, M = 10005;
int s[N], f[M];
int k, n;
inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
void put(int x) {
if(x<0) putchar('-'),x=-x;
if(x>=10) put(x/10);
putchar(x%10^48);
}
int sg(int x){
// f[x] Has it been calculated
if(f[x]!=-1){
return f[x];
}else{
// Store the current situation and the situation that can be reached
unordered_set<int> S;
rep(i, 0, k){
if(x>=s[i]){
S.insert(sg(x-s[i]));
}
}
// Find the minimum natural number that does not exist in the set
for(int i=0;;++i){
if(!S.count(i)){
return f[x]=i;
}
}
}
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
k=read();
rep(i, 0, k){
s[i]=read();
}
n=read();
memset(f, -1, sizeof f);
int ans=0;
rep(i, 0, n){
int x=read();
ans^=sg(x);
}
if(ans){
puts("Yes");
}else{
puts("No");
}
}
Originality is not easy.
Reprint please indicate the source
If it helps you Don't forget to praise and support
边栏推荐
- Regulations for network security events of vocational group in 2022 Guizhou Vocational College skill competition
- Suppose a bank's ATM machine, which allows users to deposit and withdraw money. Now there is 200 yuan in an account, and both user a and user B have the right to deposit and withdraw money from this a
- Leetcode-1200: minimum absolute difference
- [rust notes] 14 set (Part 1)
- Shutter web hardware keyboard monitoring
- Leetcode backtracking method
- Matrixdb V4.5.0 was launched with a new mars2 storage engine!
- AE tutorial - path growth animation
- [leetcode] day94 reshape matrix
- Leetcode dynamic programming
猜你喜欢
MySQL advanced part 1: stored procedures and functions
Alibaba's new member "Lingyang" officially appeared, led by Peng Xinyu, Alibaba's vice president, and assembled a number of core department technical teams
1.15 - input and output system
ADG5412FBRUZ-RL7应用 双电源模拟开关和多路复用器IC
Bit of MySQL_ OR、BIT_ Count function
3.Oracle-控制文件的管理
Error ora-28547 or ora-03135 when Navicat connects to Oracle Database
Day 2 document
中国剩余定理 AcWing 204. 表达整数的奇怪方式
MySQL advanced part 2: storage engine
随机推荐
Sorting out the latest Android interview points in 2022 to help you easily win the offer - attached is the summary of Android intermediate and advanced interview questions in 2022
Quickly use Amazon memorydb and build your own redis memory database
Leetcode backtracking method
Matrixdb V4.5.0 was launched with a new mars2 storage engine!
What's wrong with this paragraph that doesn't work? (unresolved)
ollvm编译出现的问题纪录
3.Oracle-控制文件的管理
MySQL advanced part 2: the use of indexes
Groupbykey() and reducebykey() and combinebykey() in spark
博弈论 AcWing 891. Nim游戏
Chart. JS - Format Y axis - chart js - Formatting Y axis
2048项目实现
Golang uses context gracefully
June 29, 2022 daily
Error ora-28547 or ora-03135 when Navicat connects to Oracle Database
阿里新成员「瓴羊」正式亮相,由阿里副总裁朋新宇带队,集结多个核心部门技术团队
背包问题 AcWing 9. 分组背包问题
Currently clicked button and current mouse coordinates in QT judgment interface
【LeetCode】Day94-重塑矩阵
our solution