模板 - SG函数
https://scut.online/p/93
每次取走的石子是b的幂次。打表暴力发现规律。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=1000005;
//f[i]:可改变i状态的方式
//SG[]:0~n的SG函数值
//S[]:为x后继状态的集合
vector<int> f[MAXN];
int SG[MAXN],S[MAXN];
void getSG(int n){
for(int i = 1; i <= n; i++){
int l=f[i].size();
//后继状态 最多有l 种
for(int j=0;j<=l;j++){
S[j]=0;
}
for(auto vi:f[i]){
//vi:从i状态能取走的石子数
S[SG[i-vi]]=1;
}
for(int j=0;j<=l;j++){
if(!S[j]){
SG[i] = j;
break;
}
}
cout<<"SG["<<i<<"]="<<SG[i]<<endl;
}
}
int N=120;
void enque(int id){
ll cur=1,b=8;
while(id>=cur){
f[id].push_back(cur);
cur*=b;
}
}
int main() {
#ifdef Yinku
freopen("Yinku.in", "r", stdin);
#endif // Yinku
for(int i=0;i<=N;i++){
enque(i);
}
getSG(N);
}
https://scut.online/p/42
每次有1或2两种取法,直接求sg然后异或一起?鹏哥有个记忆化搜索的写法感觉更巧妙一些。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
/*
const int MAXN=1000005;
//f[i]:可改变i状态的方式
//SG[]:0~n的SG函数值
//S[]:为x后继状态的集合
vector<int> f[MAXN];
int SG[MAXN],S[MAXN];
void getSG(int n){
for(int i = 1; i <= n; i++){
int l=f[i].size();
//后继状态 最多有l 种
for(int j=0;j<=l;j++){
S[j]=0;
}
for(auto vi:f[i]){
//vi:从i状态能取走的石子数
S[SG[i-vi]]=1;
}
for(int j=0;j<=l;j++){
if(!S[j]){
SG[i] = j;
break;
}
}
cout<<"SG["<<i<<"]="<<SG[i]<<endl;
}
}
int N=120;
void enque(int id){
if(id>=1)
f[id].push_back(1);
if(id>=2)
f[id].push_back(2);
}
*/
int main() {
#ifdef Yinku
freopen("Yinku.in", "r", stdin);
#endif // Yinku
/*for(int i=0;i<=N;i++)
enque(i);
getSG(N);*/
int T;
scanf("%d",&T);
int n,m;
while(T--){
scanf("%d%d",&n,&m);
int sg=(n%3)^(m%3);
puts(sg?"Naive is excited.":"Excited is naive.");
}
}
模板 - SG函数的更多相关文章
- hdu1536&&hdu3023 SG函数模板及其运用
S-Nim Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64u Submit Status ...
- SG函数模板(转)
ps:sg[i]为0表示i节点先手必败. 首先定义mex(minimal excludant)运算,这是施加于一个集合的运算,表示最小的不属于这个集合的非负整数.例如mex{0,1,2,4}=3.me ...
- 博弈的SG函数理解及模板
首先定义mex(minimal excludant)运算,这是施加于一个集合的运算,表示最小的不属于这个集合的非负整数.例如mex{0,1,2,4}=3.mex{2,3,5}=0.mex{}=0. 对 ...
- hdu 1536 SG函数模板题
S-Nim Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- 算法笔记--sg函数详解及其模板
算法笔记 参考资料:https://wenku.baidu.com/view/25540742a8956bec0975e3a8.html sg函数大神详解:http://blog.csdn.net/l ...
- 【非原创】sg函数模板
学习博客:戳这里 解题模型: 1.把原游戏分解成多个独立的子游戏,则原游戏的SG函数值是它的所有子游戏的SG函数值的异或. 即sg(G)=sg(G1)^sg(G2)^...^sg(Gn) ...
- Light OJ 1199:Partitioning Game(SG函数模板)
Alice and Bob are playing a strange game. The rules of the game are: 1. Initially there are n p ...
- hdu 1809 求SG函数
A New Tetris Game(2) Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- POJ 2960 S-Nim 博弈论 sg函数
http://poj.org/problem?id=2960 sg函数几乎是模板题. 调试代码的最大障碍仍然是手残在循环里打错变量名,是时候换个hydra产的机械臂了[超想要.jpg] #includ ...
随机推荐
- DevExpress.XtraGrid.Views.Grid.GridView
private void SetView() { GridView gridView = (GridView)this.DefaultView; if (gridView != null) { gri ...
- ZOJ 1610 Count the Colors (线段树成段更新)
题意 : 给出 n 个染色操作,问你到最后区间上能看见的各个颜色所拥有的区间块有多少个 分析 : 使用线段树成段更新然后再暴力查询总区间的颜色信息即可,这里需要注意的是给区间染色,而不是给点染色,所以 ...
- Android应用源码航空订票软件客户端
功能分类:其他 支持平台:Android 运行环境:Android 开发语言:Java 开发工具:Eclipse 源码大小:1.76MB 下载地址:http://w ...
- (55)Linux驱动开发之一驱动概述
驱动 ...
- Comparable接口与Comparator接口的比较————Comparable接口详解
Comparable接口位于:java.lang包中. Comparable接口: 1. 实现了这个接口的类,会被强制进行自然排序. 问题又来了:那什么是自然排序呢? 自然排序:就是字典序排序,不分大 ...
- 二分类算法的评价指标:准确率、精准率、召回率、混淆矩阵、AUC
评价指标是针对同样的数据,输入不同的算法,或者输入相同的算法但参数不同而给出这个算法或者参数好坏的定量指标. 以下为了方便讲解,都以二分类问题为前提进行介绍,其实多分类问题下这些概念都可以得到推广. ...
- Linux小记 -- apt-get install build-essential和yum groupinstall "Development Tools"
Ubuntu的apt install build-essential 作用:配置Debian系统编译环境,就是下载安装支持编译Debian包的依赖/包,比如gcc等. 直接执行 #apt instal ...
- SQL Server 2016升级迁移过程中性能问题诊断案例
日常运行的批量更新作业,平日是5分钟之内结束,今天出现超过30分钟没结束的情况,实际运行3个小时以上,应用程序超时报错. 数据库版本:SQL Server 2016企业版 问题SQL: declare ...
- 使用collection查询集合属性
介绍resultMap中使用collection查询集合属性 业务需求,查询部门中的多个人员 public class Department { private Integer id; private ...
- eclipse link方式安装插件安装不上
只能要features和plugins两个文件夹,其他文件需要删除