【AcWing 235. 魔法珠

题意:

有n堆魔法珠,第i堆有ai个,两个人轮流进行以下操作:

当轮到某人操作时,如果每堆中魔法珠的数量均为 1,那么他就输了。
问谁赢谁输

题解:

经典博弈论问题
注意本题中的操作方法为将p分为小于p的约数
我们先求出p的约数(小于p),然后对于每个约数跑遍dfs求出sg,所有sg异或起来,因为题目说要消失一堆,所以消失哪一堆就异或哪一堆,记得再填回去(因为每次只消失一堆,其他还在)
详细过程看代码

代码:

#include<bits/stdc++.h>
#define debug(a,b) printf("%s = %d\n",a,b);
typedef long long ll;
using namespace std;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();//s=(s<<3)+(s<<1)+(ch^48);return s*w;
}
const int maxn=2000;
int a[maxn];
int sg[maxn];
int N;
int dfs(int x){if(sg[x]!=-1)return sg[x];if(x==1) return sg[x]=0;int vis[maxn];vector<int>vec;vec.clear();memset(vis,0,sizeof(vis));for(int i=1;i*i<=x;i++){if(x%i==0){vec.push_back(i);if(x/i!=i&&x/i<x)vec.push_back(x/i); }}int ans=0;for(int i=0;i<vec.size();i++){ans^=dfs(vec[i]);}for(int i=0;i<vec.size();i++){ans^=dfs(vec[i]);//去掉第i堆 vis[ans]=1;ans^=dfs(vec[i]);//再加回去 }for(int i=0;i<maxn;i++){if(!vis[i])return sg[x]=i;}}
int main()
{memset(sg,-1,sizeof(sg));while(cin>>N){int ans=0;int x;for(int i=1;i<=N;i++){cin>>x; ans^=dfs(x);}if(ans)puts("freda");else puts("rainbow"); }return 0;
}

【AcWing 235. 魔法珠相关推荐

  1. 算法提高课-搜索-最小步数模型-AcWing 1107. 魔板:bfs、复杂、八数码类似的题目

    题目分析 来源:acwing 分析: 最小步数模型常用哈希 按照ABC的顺序来搜,得到的是字典序最小的. 这里整幅"图"是一个状态, 装进一个字符串中,然后一个状态改变到另一个状态 ...

  2. 算法——AcWing算法提高课中代码和题解

    文章目录 第一章 动态规划 (完成情况:64/68) 数字三角形模型 最长上升子序列模型 背包模型 状态机模型 状态压缩DP 区间DP 树形DP 数位DP 单调队列优化DP 斜率优化DP 第二章 搜索 ...

  3. AcWing算法提高课

    1. 动态规划(43/68) 1.1 数字三角形模型(4/4) 1.1.1 AcWing 1015. 摘花生 结论: f[i][j]=max⁡(f[i−1][j],f[i][j−1])+w[i][j] ...

  4. 【搜索专题】BFS中的多源BFS-双端队列BFS

    A.AcWing 173. 矩阵距离(多源BFS) 所有点到多个终点的最短距离 我们可以建一个虚拟源点,虚拟源点到所有终点连0权的边,跑一次单源最短路即可 答案就是每一个点到虚拟源点的最近距离 先将d ...

  5. Jozky 刷题目录

    文章目录 本目录参考OI-Wiki 还未解决专区 算法基础 枚举 模拟 递归&分治 贪心 排序 前缀和&差分 二分 倍增 构造 搜索 DFS && BFS 双向搜索 启 ...

  6. 博弈论(基础概念+例题)

    博弈论(b站视频) 文章目录 一些概念 以Nim游戏为例 Nim游戏介绍 定义 必败/必胜局面 必败/必胜局面的判定引理 Nim游戏判定引理的等价命题 有向图游戏 对判定引理的数学描述-Sg函数 有向 ...

  7. 手机 java服务器ip地址_java获取系统当前服务器IP地址

    BZOJ-1008 越狱 数论快速幂 1008: [HNOI2008]越狱 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 6192 Solved: 26 ...

  8. 梦幻模拟战pc版更新服务器正在维护,梦幻模拟战PC版免CD(更新2代跳出补丁 一些实用说明)...

    最近看到游侠有发梦幻模拟战PC版1-2 下载   不过要禁用DX 还要拔光驱 比较麻烦   我把我以前收藏的L1 L2  免CD发出来分享  我自己反正测试可以用 1代: 第1步 替换langpc.e ...

  9. boos里的AHCI RAID_DNF团本前瞻:希洛克RAID二阶段流程与打法讲解

    上期栏目已经为大家介绍了希洛克RAID一阶段的通关流程和打法攻略,那么今天我们继续来了解一下希洛克RAID二阶段该怎么打. 二阶段我们从现实世界进入了希洛克的精神世界[无形之棺],二阶段开始时背景也会 ...

最新文章

  1. 容斥 + 爆搜打表 ---- 2020年南京icpc H.Harmonious Rectangle
  2. HOG和SIFT图像特征提取简述
  3. 遍历——PowerShell三分钟(十)
  4. GDCM:gdcm::terminal的测试程序
  5. adb 查看当前包名和Activity
  6. 开源与自由 | 商业自由:从边缘到核心贡献
  7. 给 asp.net core 写个中间件来记录接口耗时
  8. 不同php文件,php-不同文件夹的不同登录(会话)
  9. java jar apktool,ShakaApkTool.jar v3.0.0(反编译显示中文的apktool)下载
  10. asm数据文件迁移(os–asm)
  11. 数据结构学习笔记06排序 (快速排序、表排序、基数排序)
  12. Unity URP中根据深度重建世界坐标
  13. AOP之5种增强方法应用范例
  14. 【CodeVS3100】蜗牛
  15. 小程序快递单号查询接口物流助手对接指南
  16. 好玩的表情包机器人微信小程序源码下载支持直接搜索仿聊天界面
  17. idea高版本设置注入飘红(红色波浪线)
  18. vue在初始化时给scrollTop设置一个值,但scrollTop却始终为0
  19. 手机号码段简介以及最新手机号段归属地数据库(2018年7月1日)
  20. flash课件制作成品_原来,网络课件的表现形式也有“轮回说”

热门文章

  1. 68张机械原理动图,够你看一晚上了!
  2. 外国人最常说的100个“中国词”出炉,第一个你绝对想不到…
  3. 一文读懂 HMM 模型和 Viterbi 算法
  4. 爱卡创誓记java刷钱_【178创誓记】快速升级:40到50级只需要两天的黄金刷
  5. mysql pmod项目_内置函数 - 数学函数 - 《Apache Doris 文档(201812)》 - 书栈网 · BookStack...
  6. linux path减少,Linux的环境变量PATH中所带来的问题及解决方法
  7. python choice添加下拉框_自定义Django Form中choicefield下拉菜单选取数据库内容实例...
  8. python是c语言_python与c语言
  9. c++将字符串转换成 int 类型
  10. 计算机专业可以报考放射医学吗吗,文科生可以报考医学影像技术专业吗