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

算法学习day19----博弈论模型--取石子游戏(Python)

一道威佐夫博弈题,来自杭电oj

具体思路见文章链接,写的非常好,🌰举的很完善

这里提供python改写与优化代码供大家参考,原博弈模型用到黄金分割这一浮点数并进行向下取整

为避免浮点数精度问题,使用整数运算验证奇异局势:

对于两堆石子(a, b),其中 a ≤ b,计算 k = b - a。奇异局势满足:

  • a = floor(k * (1 + √5) / 2)

  • 条件1:当 2a ≥ k 时,检查 (2a - k)² ≤ 5k²

  • 条件2:当 2(a + 1) > k 时,检查 5k² < (2a + 2 - k)²

  • 同时满足这两个条件则为奇异局势,先手必败(输出0);否则先手必胜(输出1)。

def main():import sysdata = sys.stdin.read().split()if not data:returnresults = []for i in range(0, len(data), 2):a = int(data[i])b = int(data[i+1])if a > b:a, b = b, ak = b - a# 处理特殊情况:两堆都为0if a == 0 and k == 0:results.append("0")# 处理特殊情况:两堆相等且非零elif k == 0:results.append("1")else:# 合并两个条件为单一判断if (2*a - k)**2 <= 5*k*k < (2*a + 2 - k)**2:results.append("0")else:results.append("1")for res in results:print(res)if __name__ == "__main__":main()

http://www.dtcms.com/a/339091.html

相关文章:

  • 懒加载机制实现子模块按需动态导入
  • 全平台轻量浏览器推荐|支持Win/macOS/Linux,极速加载+隐私保护+扩展插件,告别广告与数据追踪!
  • RT-Thread Nano移植到STM32心得(基于GCC、HAL库)
  • Mac下载AOSP源代码
  • UE小:交叉编译linux的坑
  • 【集合框架HashSet底层原理】
  • IDEA:设置彩色输出
  • DataAnalytics之Tool:Metabase的简介、安装和使用方法、案例应用之详细攻略
  • 项目一系列-第5章 前后端快速开发
  • 虚拟环境安装了fastapi但是使用时报错:ModuleNotFoundError: No module named ‘fastapi‘
  • C++利用CerateProcess创建WPF进程并通过命名管道通讯
  • Scikit-learn通关秘籍:从鸢尾花分类到房价预测
  • 项目部署与持续集成
  • Android RxJava数据库操作:响应式改造实践
  • AUTOSAR进阶图解==>AUTOSAR_SWS_FunctionInhibitionManager
  • Spring Ai Chat Memory
  • Python 与 VS Code 结合操作指南
  • 【Vue开发】在Vite+Vue3项目中实现离线Iconify图标方案
  • 【什么是非晶合金?非晶电机有什么优点?】
  • Redis面试题及详细答案100道(71-85) --- 综合篇
  • Vim笔记:缩进
  • KMM跨平台叛逃实录:SwiftUI与Compose Multiplatform共享ViewModel的混合开发框架(代码复用率85%)
  • Qt5 GUI 编程详解
  • 【AI大模型的发展历史】从Transformer到2025年的多模态、推理与开源革命
  • mlir 类型
  • docker 数据卷、自定义镜像操作演示分享(第二期)
  • 【数据结构】堆和二叉树详解(下)
  • SpringAI——向量存储(vector store)
  • SpringClound——网关、服务保护和分布式事务
  • Redis-缓存-击穿-分布式锁