博客
关于我
HDU 6266 Hakase and Nano (规律 + 博弈)
阅读量:617 次
发布时间:2019-03-13

本文共 1423 字,大约阅读时间需要 4 分钟。

对于H和N进行的石子游戏,我们需要分析不同情况下谁能获胜。游戏规则是:每轮H可以进行两次操作,而N只能进行一次操作。这个特殊规则影响了游戏的进程。

前提分析

我们可以从简单情况出发,观察游戏规律:

  • 堆石子数简化情况
    • 当堆数为3,石子数为1,1,1时:H先手会失败,N先手则是胜利。
    • 当堆数为4,石子数为1,1,1,x(x为任意数):H必败,N可胜。
    • 当堆数为3,石子数为1,1,x(x>1):N先手时H必败。
  • 必败态分析

    通过上述例子可以总结出以下条件:

  • H先手时必败的条件

    • 堆石数为1的数量n,且n能被3整除。
  • N先手时必败的条件

    • 堆石数满足以下两种情况之一:
      • 堆数n满足n%3 == 1,并且堆数为1的数量cnt >= n-1。
      • 堆数n满足n%3 == 0,并且堆数为1的数量cnt == n-1。
  • 代码实现

    #include 
    #include
    using namespace std;int main() { int t; cin >> t; for (int case = 0; case < t; ++case) { int n, d; cin >> n >> d; int cnt = 0; for (int i = 1; i <= n; ++i) { int x; cin >> x; if (x == 1) { cnt++; } } if (d == 1) { // H先手 if (cnt == n && cnt % 3 == 0) { cout << "No"; } else { cout << "Yes"; } } else { // N先手 bool condition1 = (n % 3 == 1 && cnt >= n - 1); bool condition2 = (n % 3 == 0 && cnt == n - 1); if (condition1 || condition2) { cout << "No"; } else { cout << "Yes"; } } } return 0;}

    解释

    • 输入处理:读取测试用例数量t,每个用例读取堆数n和先手人选d。
    • 石子数统计:遍历每个堆,统计堆数为1的数量cnt。
    • 判断胜负
      • H先手时,如果cnt等于n且能被3整除,H必败(输出"No"),否则H可以胜利(输出"Yes")。
      • N先手时,检查是否满足两种必败条件之一:
        • 若n除3余1且1堆石子的数目大于等于n-1。
        • 若n除3余0且1堆石子的数目等于n-1。满足任何一种条件则N必败(输出"No"),否则N可以胜利(输出"Yes")。

    通过以上分析和代码,可以准确判断H和N在不同堆石分布下的胜负情况。

    转载地址:http://fzpaz.baihongyu.com/

    你可能感兴趣的文章
    PowerBuilder 使用自定义事件触发键盘Enter事件
    查看>>
    PowerCreatorCMS UploadResourcePic 任意文件上传漏洞复现
    查看>>
    PowerDesigner 使用的一些技巧(转)
    查看>>
    QGIS在Windows上下载安装与建立空间数据库连接
    查看>>
    PowerDesigner165安装婆姐汉花教程
    查看>>
    PowerDesigner使用教程:设置注释、默认值属性
    查看>>
    PowerDesigner使用教程:不显示背景网格
    查看>>
    PowerDesigner使用教程:创建数据模型以及导出
    查看>>
    PowerDesigner使用教程:右侧工具栏显示/隐藏
    查看>>
    PowerDesigner使用教程:导出sql文件以及解决中文乱码问题
    查看>>
    PowerDesigner使用教程:时间字段设置
    查看>>
    PowerDesigner使用教程:给字段添加唯一约束
    查看>>
    QGIS中怎样设置图层样式并导出地图样式
    查看>>
    PowerDesigner使用笔记
    查看>>
    QGIS中怎样实现数据坐标系转换
    查看>>
    PowerDesigner学习--基本步骤
    查看>>
    PowerDesigner导出Report通用报表
    查看>>
    PowerDesigner教程系列(二)概念数据模型
    查看>>
    Powerdesigner显示表的comment和列的comment的方法
    查看>>
    PowerDesigner最基础的使用方法入门学习
    查看>>