当前位置: 首页 > news >正文

算法基础之集合-Nim游戏

集合-Nim游戏

  • 核心思想: 博弈论

    • sg函数:在有向图游戏中,对于每个节点x,设从x出发共有k条有向边,分别到达节点y1,y2,····yk,定义SG(x)的后记节点y1,y2,····,yk的SG函数值构成的集合在执行mex运算的结果,即:SG(x)=mex({SG(y1),SG(y2)····SG(yk)})
      **特别地,**整个有向图游戏G的SG函数值被定义为有向图游戏起点s的SG函数值,即 SG(G)=SG(s).
      • mex函数:设S表示一个非负整数集合.定义mex(S)为求出不属于集合S的最小非负整数运算
  •   #include <iostream>#include <cstring>#include <algorithm>#include <unordered_set>using namespace std;const int N = 110,M = 10010;int n,m;int s[N],f[M];int sg(int x){if(f[x] != -1) return f[x];unordered_set<int> S;for(int i=0;i<m;i++){int sum = s[i];if(x >= sum) S.insert(sg(x-sum));}for(int i=0;;i++)if(!S.count(i))return f[x] = i;}int main(){cin>>m;for(int i=0;i<m;i++) cin>>s[i];cin>>n;memset(f,-1,sizeof f);int res=0;for(int i=0;i<n;i++){int x;cin>>x;res ^= sg(x);}if (res) puts("Yes");else puts("No");}
    
http://www.lryc.cn/news/355814.html

相关文章:

  • Diffusion Model, Stable Diffusion, Stable Diffusion XL 详解
  • 智能奶柜:重塑牛奶零售新篇章
  • 源代码防泄密--沙盒技术安全风险分析
  • 韭菜收割项目
  • Unity3D输入事件
  • c++ thread detach
  • 入门四认识HTML
  • js怎么生成验证码?js生成指定长度的随机字符串
  • Python魔法之旅-魔法方法(01)
  • 介绍下 npm 模块安装机制,为什么输入 npm install 就可以自动安装对应的模块
  • vue2如何父组件 对象 双向绑定子组件
  • [Android]在后台线程执行耗时操作,然后在主线程更新UI
  • 平方回文数-第13届蓝桥杯选拔赛Python真题精选
  • 位置编码(三) 2D旋转位置编码
  • 1、pikachu靶场之xss钓鱼复现
  • 弘君资本炒股技巧:股票定向增发是什么意思?是好是坏?
  • vue3项目使用pinia状态管理器----通俗易懂
  • 零基础学Java第二十五天之Lambda表达式
  • VSCode配置Lua5.4安装
  • CI/CD:持续集成/持续部署
  • ComfyUI工作流网站
  • 【机器学习】机器学习基础概念与初步探索
  • 学英语材料:单口喜剧、讲故事、短剧喜剧以及广播剧和播客节目
  • Docker Compose使用
  • 如何优雅的卸载linux上的todesk
  • 【Vue】el-checkbox多选框实现单选效果,选中一个选项则自动取消其他勾选
  • Linux中使用vi编辑器自动缩进4个字符
  • #笔记#笔记#其他
  • gtask笔记
  • 【Linux学习】深入探索进程等待与进程退出码和退出信号