博客
关于我
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/

    你可能感兴趣的文章
    PHP 第一天
    查看>>
    Redis使用量暴增,快速定位有哪些大key在作怪
    查看>>
    php 结课作业答案,北语201803考试批次《PHP》(结课作业)1.pdf
    查看>>
    PHP 统计数据功能 有感
    查看>>
    SpringBoot处理JSON数据
    查看>>
    Redis使用基本套路
    查看>>
    php 解决项目中多个自动加载冲突问题
    查看>>
    PHP 设置调试工具XDebug PHPStorm IDE
    查看>>
    php 身份证号检测
    查看>>
    PHP 输入输出流合集
    查看>>
    PHP 过滤器(Filter)
    查看>>
    php 运算符and or && || 的详解
    查看>>
    php 返回html字符串长度限制,记一次js中和php中的字符串长度计算截取的终极问题和完美...
    查看>>
    php 阿里云oss 上传回调
    查看>>
    PHP 面向对象 final类与final方法
    查看>>
    php+JQ+EasyUI自动加载数据
    查看>>
    php+sql server根据自增序号id区间查询第几条到第几条的数据
    查看>>
    php--------获取当前时间、时间戳
    查看>>
    php--正则表达式
    查看>>
    php--防止sql注入的方法
    查看>>