当前位置:网站首页>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
边栏推荐
- Navicat連接Oracle數據庫報錯ORA-28547或ORA-03135
- Presentation of attribute value of an item
- Niu Mei's math problems
- Single chip computer engineering experience - layered idea
- MySQL advanced part 1: index
- Regulations for network security events of vocational group in 2022 Guizhou Vocational College skill competition
- Error ora-28547 or ora-03135 when Navicat connects to Oracle Database
- Leetcode-3: Longest substring without repeated characters
- What is socket? Basic introduction to socket
- [learning] database: MySQL query conditions have functions that lead to index failure. Establish functional indexes
猜你喜欢
20220213-CTF MISC-a_ good_ Idea (use of stegsolve tool) -2017_ Dating_ in_ Singapore
区间问题 AcWing 906. 区间分组
Series of how MySQL works (VIII) 14 figures explain the atomicity of MySQL transactions and the principle of undo logging
How to make water ripple effect? This wave of water ripple effect pulls full of retro feeling
There are three kinds of SQL connections: internal connection, external connection and cross connection
[moviepy] unable to find a solution for exe
2021apmcm post game Summary - edge detection
【LeetCode】Easy | 20. Valid parentheses
什么是套接字?Socket基本介绍
Doing SQL performance optimization is really eye-catching
随机推荐
Presentation of attribute value of an item
Redis-01.初识Redis
11-gorm-v2-02-create data
June 29, 2022 daily
博弈论 AcWing 891. Nim游戏
Dataframe (1): introduction and creation of dataframe
One question per day 1020 Number of enclaves
博弈论 AcWing 894. 拆分-Nim游戏
[rust notes] 17 concurrent (Part 2)
MySQL advanced part 2: optimizing SQL steps
ADG5412FBRUZ-RL7应用 双电源模拟开关和多路复用器IC
2022-5-第四周日报
MySQL advanced part 2: storage engine
MySQL advanced part 1: View
[leetcode] day95 effective Sudoku & matrix zeroing
【LeetCode】Day94-重塑矩阵
Day 2 document
高斯消元 AcWing 884. 高斯消元解异或线性方程组
MySQL advanced part 2: the use of indexes
TCP's understanding of three handshakes and four waves