SG函数
1. Alice and Bob
题源:2021牛客多校第一场
题意:博弈题,每次一个人从一堆中取k个,同时从另一堆k*s(s>=0)个,(可以手工打表:D)
博弈,sg函数优化
①暴力SG
#include <bits/stdc++.h>//牛客1.1
using namespace std;
const int MAXN = 5005;
bitset<MAXN> F[MAXN];//5005乘5005的一个01二维矩阵
//暴力SG
int main(){
int cnt=0;
for(int SUM=0; SUM<=10000; SUM++)
for(int i=max(0,SUM-5000),j=SUM-i; i<=5000&&j>=0; i++,j--)
if(!F[i][j]){
for(int k=1;i+k<=5000;k++)
for(int l=0;j+k*l<=5000;l++)
F[i+k][j+k*l]=1;
for(int k=1;j+k<=5000;k++)
for (int l=0;i+k*l<=5000;l++)
F[i+k*l][j+k]=1;
}
int t;cin>>t;
while(t--){
int n,m;cin>>n>>m;
puts(F[n][m]?"Alice":"Bob");
}
return 0;
}