https://scut.online/p/290

一个 N 个数的取数游戏,Kaildls 和 Parco 轮流操作,每次操作从 N 个数中取一个数 y 并把他变成 y-x(满足 x | y 且x < y),无法操作的人输。

假设 Kaildls 先手且两人都是用最优策略,请问最后谁会赢?

第一次学SG函数,要找的是每次能从石子堆中取走的数目,记录下来。

最后的Nim和为0是后手赢?

#include<bits/stdc++.h>
using namespace std;
#define ll long long#define MAXN 1000005
#define N 1000005//f[N]:可改变当前状态的方式,N为方式的种类,f[N]要在getSG之前先预处理
//SG[]:0~n的SG函数值
//S[]:为x后继状态的集合
vector<int> nextofSG[MAXN];
int f[N],SG[MAXN],S[MAXN];
void  getSG(int n){for(int i = 2; i <= n; i++){int l=nextofSG[i].size();//后继状态 最多有l 种for(int j=0;j<=l;j++){S[j]=0;}for(auto vi:nextofSG[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 a[1000005];unsigned generateai(unsigned &n,unsigned &x,unsigned &y, unsigned &z){x=x^(x<<11);x=x^(x>>4);x=x^(x<<5);x=x^(x>>14);unsigned w=x^(y^z);x=y;y=z;z=w;return z;
}int main(){unsigned n,x,y,z;for(int i=1;i<=1000000;i++){for(int j=i+i;j<=1000000;j+=i){nextofSG[j].push_back(i);}}getSG(1000000);for(int t=0;t<100;t++){cin>>n>>x>>y>>z;int sumSG=0;for(int i=0;i<n;i++){a[i]=generateai(n,x,y,z)%n+1;//cout<<a[i]<<endl;sumSG^=SG[a[i]];}//cout<<"!"<<sumSG<<endl;if(sumSG==0)cout<<"Parco"<<endl;else{cout<<"Kaildls"<<endl;}}
}

转载于:https://www.cnblogs.com/Yinku/p/10421254.html

SCUT - 290 - PARCO的因数游戏 - 博弈论相关推荐

  1. BZOJ 1022 Luogu P4279 [SHOI2008]小约翰的游戏 (博弈论)

    题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=1022 (luogu) https://www.luogu.org/pro ...

  2. 牛客网CSP-S提高组赛前集训营1题解(仓鼠的石子游戏 [博弈论] + 乃爱与城市的拥挤程度 [树上DP] + 小w的魔术扑克[dfs + 离线])

    文章目录 T1:仓鼠的石子游戏 题目 题解 代码实现 T2:乃爱与城市拥挤程度 题目 题解 代码实现 T3:小w的魔术扑克 题目 题解 代码实现 T1:仓鼠的石子游戏 题目 仓鼠和兔子被禁止玩电脑,无 ...

  3. 蓝桥杯 填字母游戏(博弈论)

    小明经常玩 LOL 游戏上瘾,一次他想挑战K大师,不料K大师说: "我们先来玩个空格填字母的游戏,要是你不能赢我,就再别玩LOL了". K大师在纸上画了一行n个格子,要小明和他交替 ...

  4. [AcWing] 1319.移棋子游戏 博弈论 Sg函数板子题

    题目链接:1319.移棋子游戏 题解 好久没写博弈论的题了,写几道复习一下,博弈论SG主要由两大部分组成:SG函数和SG定理 SG(x)=mex(S),其中S是x的后继状态的SG函数值集合,mex(S ...

  5. 美女和男人的游戏 博弈论

    美女和男人的游戏,这是很经典的案例了,游戏规则是:男女各投一次硬币,如果男女的硬币都是正面,则男人+3:如果都是反面,则男人+1:如果一正一反,则男人-1. 女\男 正面 反面 正面 +3 -2 反面 ...

  6. [XSY]Illyasviel的图游戏(博弈论)

    Illyasviel的图游戏 除了1号点和n号点每个点度数小于等于2,因此1 到 n 的所有简单路径互不相交. 在结束游戏前的最后一步一定是剩下一条 1 到 n 的路径,并且路径上的权值全都是1. 游 ...

  7. vijos1196|吃糖果游戏|博弈论

    描述 Matrix67和Shadow正在做一个小游戏. 桌子上放着两堆糖果,Matrix67和Shadow轮流对这些糖果进行操作.在每一次操作中,操作者需要吃掉其中一堆糖果,并且把另一堆糖果分成两堆( ...

  8. 分花生游戏 (博弈论)

    Description 4月6日,我校Nicholas代表队做火车前往湖北武汉大学参加"百度杯"第二届华中北区ACM程序设计邀请赛, 在火车上老师和队员们觉得要找点事情来做,于是小 ...

  9. P1199 [NOIP2010 普及组] 三国游戏-博弈论+贪心

    [NOIP2010 普及组] 三国游戏 题目描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有 N N N ...

最新文章

  1. /xiaolei.php|martin_十步解决Php Utf-8编码(转贴)
  2. 【深度学习模型的训练与评估】一个实例:Iris多分类
  3. 在github上面下载文件夹的方法666
  4. (转)wamp2.5虚拟主机VirtualHost出现403 Forbidden问题解决
  5. java中的布局文件改成,Android 动态设置布局文件的exception
  6. ASP.NET 2.0 中的 Theme 功能
  7. Qt编写的线损分析工具
  8. vue中src文件夹下各文件_Win10下与虚拟机中的linux共享文件夹
  9. html中form标签的作用style,HTML5中meta常用标签属性说明
  10. 老男孩教育每日一题-2017-04-25:怎样产生一个子shell?
  11. mysql 主键自增_还再使用数据库自增主键吗?
  12. 分拣外观残缺的机器人_【移动机器人(AGV)联盟一周要闻】
  13. 自动摘要学习计划(英语)
  14. python滤波器信号处理_详解利用Python scipy.signal.filtfilt() 实现信号滤波
  15. win10如何微信多开(无需工具)
  16. JQuery22( JQ原理 Clone)
  17. 正则表达式科学计数法_数据科学家的正则表达式
  18. ES3数组和字符串的方法
  19. VM虚拟机占内存非常大
  20. js获取android系统版本号,JS获取系统版本和手机型号

热门文章

  1. Javascript三种创建对象的方法,new关键字,for...in 遍历对象
  2. 【王道计组笔记】高速缓存器:局部性原理及性能分析
  3. 【深度优先搜索】网格类问题:牛客网:机器人的运动范围
  4. 【二叉树】剑指offer:二叉树中序遍历的下一个节点
  5. 【动态规划】蓝桥2020:画廊
  6. docker 中文文档_Kubernetes将弃用Docker,不必恐慌
  7. Springboot项目启动时加载数据库数据到内存
  8. html弄多个按钮_如何为HTML / CSS页面添加更多按钮?
  9. 【CCCC】L3-015 球队“食物链” (30分),搜索排列
  10. 【PAT甲】1051 Pop Sequence (25分)判断出栈顺序的合法性