4005. 取石子游戏
Powered by:NEFU AB-IN
Link
文章目录
- 4005. 取石子游戏
- 题意
- 思路
- 代码
4005. 取石子游戏
题意
Alice 和 Bob 正在玩一个取石子游戏。
共有 n个石子,双方轮流采取行动。
每当轮到一人行动时,该名玩家需要从石子堆中取走恰好 1或 2或 k个石子。
如果轮到一人行动时,已经没有石子可取,则该名玩家失败。
已知,双方都会采取最优策略,且 Alice 率先行动。
请问,最终谁将获胜。思路
具体思路可以参考这篇博客 link
ps: 这篇博客的循环节找的不能说错,但最好是从0开始,如 0 , 1 , 2 , 3 0,1,2,3 0,1,2,3遇到这种单堆石子博弈论问题,可以通过sg函数打表的方式找规律求解
比如这个题,就可以枚举k的取值,然后将sg值打表打出来找规律代码
打表代码
''' Author: NEFU AB-IN Date: 2023-03-25 18:49:28 FilePath: \Acwing\4005\4005.py LastEditTime: 2023-03-25 18:54:33 ''' read = lambda: map(int, input().split()) from collections import Counter, deque from heapq import heappop, heappush from itertools import permutationsN = int(1e3 + 10) INF = int(2e9) f = [-1] * N # 打表代码def sg(x):if f[x] != -1:return f[x]d = Counter()for i in lst:if x >= i:d[sg(x - i)] = 1for i in range(INF):if d[i] == 0:f[x] = ireturn f[x]k = int(input())lst = [1, 2, k]for i in range(0, 20):print(i, sg(i))
正式代码
''' Author: NEFU AB-IN Date: 2023-03-25 18:57:14 FilePath: \Acwing\4005\4005.1.py LastEditTime: 2023-03-25 19:00:55 ''' read = lambda: map(int, input().split()) from collections import Counter, deque from heapq import heappop, heappush from itertools import permutationsN = int(1e3 + 10) INF = int(2e9) # 正式代码for _ in range(int(input())):n, k = read()if k % 3:if n % 3:print("Alice")else:print("Bob")else:ys = n % (k + 1)if ys % 3 == 0 and ys != k:print("Bob")else:print("Alice")
4005. 取石子游戏相关推荐
- BZOJ 1874: [BeiJing2009 WinterCamp]取石子游戏(SG函数)
Time Limit: 5 Sec Memory Limit: 162 MB Submit: 871 Solved: 365 [Submit][Status][Discuss] Descripti ...
- bzoj1874: [BeiJing2009 WinterCamp]取石子游戏
1874: [BeiJing2009 WinterCamp]取石子游戏 Time Limit: 5 Sec Memory Limit: 162 MB Submit: 834 Solved: 350 ...
- 威佐夫博弈:百练OJ:1067:取石子游戏
威佐夫博弈(Wythoff's game):有两堆各若干个物品,两个人轮流从任一堆取至少一个或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜. 百练OJ:1067:取石子游戏 ...
- POJ 1067 取石子游戏
取石子游戏 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 40917 Accepted: 13826 Descripti ...
- POJ-1067取石子游戏,威佐夫博弈范例题/NYOJ-161,主要在于这个黄金公式~~
取石子游戏 Time Limit: 1000MS Memory Limit: 10000K Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取 ...
- “美登杯”上海市高校大学生程序设计邀请赛 **D. 小花梨的取石子游戏**
"美登杯"上海市高校大学生程序设计邀请赛 (华东理工大学) D. 小花梨的取石子游戏 Description 小花梨有?堆石子,第?堆石子数量为??,?堆石子顺时针编号为1 − ? ...
- poj 1067 取石子游戏(博弈+威佐夫博奕(Wythoff Game))
取石子游戏 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 29959 Accepted: 9818 Descriptio ...
- 【结论】取石子游戏(jzoj 1211)
取石子游戏 jzoj 1211 题目大意: 有n个石子,每次可取1~k个石子(必须取),问先取者是否有必胜方法 输入样例 2 2 3 3 2 输出样例 No Yes 数据范围 20%的数据 K≤10 ...
- hdu 2516 取石子游戏
取石子游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
最新文章
- OpenCV+python:膨胀和腐蚀
- 将python3.1+pyqt4打包成exe
- idea项目依赖导入失败_解决idea导入项目后依赖报错问题
- VTK修炼之道46:图形基本操作进阶_三角网格体积、表面积、测地距离、包围盒
- [codevs 1034] 家园
- Bigraph Extension
- jQuery动画与事件概念以及语法
- C语言将字符串s连接到t的后面,下列给定程序中,函数fun的功能是:先将字符串s中的字符按正序存放到字符串t..._考试资料网...
- java的if else if_java,if else和if else if else区别?
- ResNet训练单通道图像分类网络(Pytorch)
- 【IJCAI 2022】参数高效的大模型稀疏训练方法,大幅减少稀疏训练所需资源
- 系统安装-U盘安装Windows XP SP3纯净版简述
- GIT无法提交到码云。原因可能是所在提交位置不对
- 投资 - 指标介绍: MACD
- Mysql(三)Mysql索引基本原理
- Android 信鸽推送集成
- MATLAB 手把手带你制作第一个APP designer程序(电子词典)
- AltiumDesigner规则设置
- ReSharper配置及用法
- HTML标签的基本使用:无序列表、有序列表、定义列表