当前位置:网站首页>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 
边栏推荐
- Shutter web hardware keyboard monitoring
- Filter the numbers and pick out even numbers from several numbers
- 博弈论 AcWing 892. 台阶-Nim游戏
- Erreur de connexion Navicat à la base de données Oracle Ora - 28547 ou Ora - 03135
- Single chip computer engineering experience - layered idea
- 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 backtracking method
- Currently clicked button and current mouse coordinates in QT judgment interface
- Leetcode dynamic programming
- Sqlmap tutorial (II) practical skills I
猜你喜欢

MySQL advanced part 2: the use of indexes

Redis-01.初识Redis

Paper reading report

Navicat連接Oracle數據庫報錯ORA-28547或ORA-03135

求组合数 AcWing 888. 求组合数 IV

Sqlmap tutorial (II) practical skills I

4. Object mapping Mapster

阿里巴巴成立企业数智服务公司“瓴羊”,聚焦企业数字化增长

International Open Source firmware Foundation (osff) organization

3. Oracle control file management
随机推荐
Install opencv -- CONDA to establish a virtual environment and add the kernel of this environment in jupyter
Matrixdb V4.5.0 was launched with a new mars2 storage engine!
RecyclerView的应用
Alibaba's new member "Lingyang" officially appeared, led by Peng Xinyu, Alibaba's vice president, and assembled a number of core department technical teams
Leetcode array operation
Navicat连接Oracle数据库报错ORA-28547或ORA-03135
How to generate an image from text on fly at runtime
博弈论 AcWing 891. Nim游戏
Leetcode dynamic programming
Bash exercise 17 writing scripts to install the server side of FRP reverse proxy software
Usage scenarios of golang context
4.Oracle-重做日志文件管理
1.13 - RISC/CISC
Shutter web hardware keyboard monitoring
在新线程中使用Handler
Sqlmap tutorial (1)
Doing SQL performance optimization is really eye-catching
Quickly use Amazon memorydb and build your own redis memory database
[rust notes] 14 set (Part 1)
There are three kinds of SQL connections: internal connection, external connection and cross connection