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

    你可能感兴趣的文章
    percona-xtrabackup 备份
    查看>>
    Perfect,华为爆出 Redis 宝典,原来 Redis 性能可压榨到极致
    查看>>
    SpringBoot集成OpenOffice实现doc文档转html
    查看>>
    springboot自动扫描添加的BeanDefinition源码解析
    查看>>
    Perl Socket传输(带注释)
    查看>>
    ROS中机器人的强化学习路径规划器
    查看>>
    rocketmq存储结构_rocketmq 消息存储
    查看>>
    perl---2012学习笔记
    查看>>
    Perl6 必应抓取(1):测试版代码
    查看>>
    perl学习之内置变量
    查看>>
    perl正则表达式中的常用模式
    查看>>
    Perl的基本語法
    查看>>
    perl输出中文有乱码
    查看>>
    Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). 大数据ssh权限问题 hadoop起不来 hadoopssh错
    查看>>
    PermissionError:Python 中的 [Errno 13]
    查看>>
    PermissionError:[Errno 13] 权限被拒绝:‘/manage.py‘
    查看>>
    Permutation
    查看>>
    return torch._C._broadcast_coalesced(tensors, devices, buffer_size)RuntimeError: NCCL Error 2:unhand
    查看>>
    perspective意思_2020年12月英语四级词汇讲解丨考点归纳:perspective
    查看>>
    PE启动盘和U启动盘(第三十六课)
    查看>>