n个石子围城一个圈

每次可从中取连续的 x 个石子 1<=x<=k

问先手后手谁赢

这个问题其实很简单

① k >= n ,先手一次翻完,先手赢

② 2*k >= n,先手翻一次,后手一次翻完,后手赢

③ 2*k < n,

此时如果 k = 1,我们知道显然,n为奇数先手赢,偶数后手赢

如果 k>=2,先手取一次,剩 m 个一定无法一次取完

但是一定可以把这 m 个取一下变成两个相等的部分

因为 k>=2,奇数取一个掰两半,偶数取两个掰两半就行

然后相等的两部分,由sg定理,sg[x] ^ sg[x] = 0

虽然这个sg不是 巴什博奕 那样取个模那样求,而且我们也完全没有具体去算它

但是 sg[x] ^ sg[x] = 0,这就够了,这就是必败态了,所以先手必败

所以结论:

①k >= n,先手必胜

②k == 1,n奇先手必胜,n偶后手必胜

③否则,后手必胜

环形博弈模板

bool circle_game(int n,int k){if(k>=n||k==1&&(n&1)) return 1;return 0;
}

AC代码:

#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
using namespace std;
int t,n,k;
bool circle_game(int n,int k){if(k>=n||k==1&&(n&1)) return 1;return 0;
}
int main(){scanf("%d",&t);for(int cas=1;cas<=t;cas++){scanf("%d %d",&n,&k);if(circle_game(n,k)) printf("Case %d: first\n",cas);else printf("Case %d: second\n",cas);}return 0;
}

环形博弈 HDU - 3951相关推荐

  1. hdu 3951 硬币围成一圈(博弈)

    n个硬币围成一个环 每次只能取1-K个硬币 最后取完者胜 假如5个硬币 每次取1-2个 情况1 先手取1个 后手取剩下4个中间2个 破坏了连续 虽然最后剩2个,但先手只能取一个 然后后再取一个 后手胜 ...

  2. 【HDU - 3951】Coin Game (博弈,猜规律,对称博弈)

    题干: After hh has learned how to play Nim game, he begins to try another coin game which seems much e ...

  3. HDU 3951 (博弈) Coin Game

    先考虑两种简单的情况: 如果先手能一次把硬币拿完,即 k >= n ,那么先手胜 如果每次只能拿一个硬币, 即 k = 1 ,那么如果有奇数个硬币先手胜,如果有偶数个硬币后手胜. 剩下的情况就是 ...

  4. ACM 博弈专题(5种模板)

    最近算法课在学博弈论的知识,顺手把算法题中的涉及到博弈论一并总结了 这篇文章的有些内容是参考了大佬的 可能有遗漏.... (一)巴什博弈(BAsh Game) 题目模板 只有一堆n个物品 两个人轮流取 ...

  5. 几个博弈小题总结 脑子是个好玩意,我也想有一个。

    序 : 下面的例题只给了题源,没给题目链接,但是都可以根据对应的题号找到题目来提交代码,例如HDU 2897就是hdoj的2897题.然后题意大概都是我YY之后的,也许有些描述错误,然后某些解题思路来 ...

  6. 各种常见的博弈论 + 简单例题

    斐波那契博弈 有一堆个数为n(n>=2)的石子,游戏双方轮流取石子,规则如下: 1)先手不能在第一次把所有的石子取完,至少取1颗: 2)之后每次可以取的石子数至少为1,至多为对手刚取的石子数的2 ...

  7. java中vector容器,vector向量容器(常用的使用方法总结)

    关于STL中vector容器的学习,编译运行后边看代码,边看执行结果效果更佳,还是想说看别人的代码一百遍,不如自己动手写一遍. vector向量容器不但能像数组一样对元素进行随机访问,还能随时在尾部插 ...

  8. 每日打卡 2017.04.02 博弈论专题

    https://vjudge.net/contest/156519#overview 打表:比如求斐波那契的第k项,k<=1000,很多case,这时可以预处理的时候把1-1000全部求出来并储 ...

  9. [kuangbin]各种各样的题单

    [kuangbin]各种各样的题单 专题1 简单搜索 POJ 1321 POJ 2251 POJ 3278 POJ 3279 POJ 1426 POJ 3126 POJ 3087 POJ 3414 F ...

最新文章

  1. 有n个学生选修了c语言程序设计这门课程,C语言程序设计报告学生选修课系统(18页)-原创力文档...
  2. 最近想问题想的睡不着,上来郁闷下!
  3. socket_循环发送消息
  4. EasyUI中Messager消息框的简单使用
  5. 【飞秋】进一步完善 -- GEF创建助手工具条
  6. 笔记-计算机软件技术基础(一)资源管理技术-操作系统
  7. 关于focus的概念
  8. 最大的连续子段和的O(n)解法
  9. 链表(创建,插入,删除和打印输出
  10. ASP.NET 4新增功能(一) ASP.NET核心服务
  11. 从shell(终端)中退出python
  12. cadence16.6安装教程
  13. 常用NMEA0183的报文解析
  14. 动力电池系统介绍(八)——继电器
  15. linux怎么做ppapi工具,如何在Linux上构建PPAPI插件?
  16. 含有一个量词的命题的否命题_第三节:简单的逻辑联结词、全称量词与存在量词...
  17. Server Tomcat v7.0 Server at localhost failed to start.
  18. 华信云SMS短信平台介绍
  19. KendoUI学习笔记
  20. 微软搜购诺基亚是这样的吗

热门文章

  1. 【转载】Understanding When to use RabbitMQ or Apache Kafka
  2. 单元测试 Spring
  3. Java 数据库编程 ResultSet 的 使用方法
  4. 基于 Lerna 管理 packages 的 Monorepo 项目最佳实践
  5. vc++源码免杀特殊技巧
  6. 解决RTMP推送时间戳问题引起HLS切片不均匀导致手机浏览器播放卡顿的问题
  7. #!/usr/bin/env python作用
  8. C#程序通过模板自动创建Word文档.doc
  9. 创业的一些挫见之第二家公司失败记录
  10. VS2013/2012 下无法打开 源 文件“stdafx.h”的解决方法