洛谷 P3024:[USACO11OPEN] Cow Checkers S ← 威佐夫博弈
【题目来源】https://www.luogu.com.cn/problem/P3024【题目描述】有一天Bessie 准备玩一个叫做奶牛跳棋的游戏来挑战 Farmer John。这个游戏的棋盘大小为 M×N。最初棋盘上只有一个棋子在 (X,Y)棋盘的左下角坐标是 (0,0)右上角的坐标是 (M−1,N−1)。每次游戏 Bessie 都是先手之后两个人轮流进行操作。每次操作可以在以下三种移动中选择一种1向左走任意步。2向下走任意步。3向左走 k 步然后向下走 k 步k 为任意能保证不走出棋盘的正整数。首个无法操作的人为败者。游戏共有 T 次每次都会给出一个新的坐标 (X,Y)请输出每一轮胜者的名字。【输入格式】第 1 行两个用空格隔开的正整数代表 M 和 N。第 2 行一个正整数代表 T。第 3 行到第 (T2) 行分别有两个空格隔开的非负整数代表 XY。​​​​​​​【输出格式】共 T 行每一行输出那一轮的胜者。​​​​​​​【输入样例】3 311 1【输出样例】Bessie【数据范围】保证 1≤M,N≤10^60≤XM0≤YN1≤T≤10^3。【算法分析】● “洛谷 P3024 [USACO11OPEN] Cow Checkers S”本质就是威佐夫博弈的“棋盘平移版”。这是因为把两维坐标 (x, y) 看成两堆石子数量棋子在 (x, y)每次可以在以下三种操作中选择一种。1向左走任意步 → x 减小对应从一堆取石子2向下走任意步 → y 减小对应从另一堆取石子3向左走 k 步然后向下走 k 步 → x-k, y-k对应两堆同时取 k 个谁先到 (0,0) 谁赢。● 威佐夫博弈是一种两堆石子的公平组合博弈双方轮流操作既可以从任意一堆取走至少一颗石子也可以从两堆同时取走同等数量的石子取走最后一颗石子者获胜。威佐夫博弈的先手必败态也就是奇异局势可以由黄金分割比φ(1sqrt(5))/2刻画。即对于局面 (a,b)设 a≤b两堆石子的差值为 kb-a若⌊k・φ⌋等于较小数 a则该局面为先手必败态否则先手必胜。●黄金分割比φ 是无理数浮点数无法保存其精确值只能保存近似值。当差值 k 很大时乘法运算会把浮点数的微小固有误差放大。即 k・φ 的浮点计算结果会略低于数学上的真实整数。同时C 强制类型转换long long对浮点数采取直接截断小数部分的规则并不会四舍五入此时就会得到比正确值小 1 的整数造成答案错误WA。因此本题本题采用long double配合sqrtl()提升有效存储位数将误差压缩到不会改变整数部分的范围以此通过全部测试数据。例如k・φ 的数学真值为 100000000.00000000受浮点近似误差影响计算机计算得到 99999999.99999998。此外C 的 (long long) 强制转换直接截断小数部分于是 (long long)(99999999.99999998) 得到 99999999最终算出的 ⌊k・φ⌋ 相比真实数学结果少 1导致判题错误。补充备注该现象不是 double 一定会发生是大数场景下有概率发生。long double 也不是绝对无误差只是本题数据范围下误差不足以改变整数部分。【算法代码】#includebits/stdc.h using namespace std; typedef long long LL; int main() { ios::sync_with_stdio(0); cin.tie(0); int m,n,T; cinmnT; while(T--) { LL a,b; cinab; if(ab) swap(a,b); long double phi(1.0Lsqrtl(5.0L))/2.0L; LL k(LL)((b-a)*phi); if(ka) coutFarmer John\n; else coutBessie\n; } return 0; } /* in: 3 3 1 1 1 out: Bessie */【参考文献】https://blog.csdn.net/hnjzsyjyj/article/details/163782250https://www.luogu.com.cn/problem/solution/P3024

相关新闻

2026年7月鄂尔多斯市新房价格深度分析报告

2026年7月鄂尔多斯市新房价格深度分析报告

一、报告背景与数据说明本报告基于2026年7月鄂尔多斯市新房实际成交案例,结合网签备案数据、售楼处成交记录及中介机构反馈,对当前新房市场价格水平、区域分化、产品结构与走势预判进行深度分析。数据覆盖东胜区、康巴什区、伊金霍洛旗(阿勒腾…

2026/10/31 2:50:47 阅读更多 →
2026年7月鞍山市新房价格深度分析报告

2026年7月鞍山市新房价格深度分析报告

一、报告摘要本报告基于2026年7月鞍山市新房市场实际成交案例,从成交价格、区域分布、户型结构、购房人群特征等维度进行深度分析。数据显示,2026年7月鞍山市新房成交均价为每平方米6280元,环比上涨1.2%,同比上涨3.5%。其中&#…

2026/10/30 7:12:14 阅读更多 →
扩展你的编辑器:AztecEditor-iOS 插件系统架构深入解析与自定义插件开发教程

扩展你的编辑器:AztecEditor-iOS 插件系统架构深入解析与自定义插件开发教程

扩展你的编辑器:AztecEditor-iOS 插件系统架构深入解析与自定义插件开发教程 【免费下载链接】AztecEditor-iOS A reusable native iOS visual HTML text editor component. 项目地址: https://gitcode.com/gh_mirrors/az/AztecEditor-iOS AztecEditor-iOS 是…

2026/11/2 17:34:36 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/2 0:25:10 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/2 10:46:11 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/2 10:47:40 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/2 1:16:51 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/2 10:46:31 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/2 10:46:26 阅读更多 →

日新闻

周新闻

月新闻