环形博弈 HDU - 3951
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相关推荐
- hdu 3951 硬币围成一圈(博弈)
n个硬币围成一个环 每次只能取1-K个硬币 最后取完者胜 假如5个硬币 每次取1-2个 情况1 先手取1个 后手取剩下4个中间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 ...
- HDU 3951 (博弈) Coin Game
先考虑两种简单的情况: 如果先手能一次把硬币拿完,即 k >= n ,那么先手胜 如果每次只能拿一个硬币, 即 k = 1 ,那么如果有奇数个硬币先手胜,如果有偶数个硬币后手胜. 剩下的情况就是 ...
- ACM 博弈专题(5种模板)
最近算法课在学博弈论的知识,顺手把算法题中的涉及到博弈论一并总结了 这篇文章的有些内容是参考了大佬的 可能有遗漏.... (一)巴什博弈(BAsh Game) 题目模板 只有一堆n个物品 两个人轮流取 ...
- 几个博弈小题总结 脑子是个好玩意,我也想有一个。
序 : 下面的例题只给了题源,没给题目链接,但是都可以根据对应的题号找到题目来提交代码,例如HDU 2897就是hdoj的2897题.然后题意大概都是我YY之后的,也许有些描述错误,然后某些解题思路来 ...
- 各种常见的博弈论 + 简单例题
斐波那契博弈 有一堆个数为n(n>=2)的石子,游戏双方轮流取石子,规则如下: 1)先手不能在第一次把所有的石子取完,至少取1颗: 2)之后每次可以取的石子数至少为1,至多为对手刚取的石子数的2 ...
- java中vector容器,vector向量容器(常用的使用方法总结)
关于STL中vector容器的学习,编译运行后边看代码,边看执行结果效果更佳,还是想说看别人的代码一百遍,不如自己动手写一遍. vector向量容器不但能像数组一样对元素进行随机访问,还能随时在尾部插 ...
- 每日打卡 2017.04.02 博弈论专题
https://vjudge.net/contest/156519#overview 打表:比如求斐波那契的第k项,k<=1000,很多case,这时可以预处理的时候把1-1000全部求出来并储 ...
- [kuangbin]各种各样的题单
[kuangbin]各种各样的题单 专题1 简单搜索 POJ 1321 POJ 2251 POJ 3278 POJ 3279 POJ 1426 POJ 3126 POJ 3087 POJ 3414 F ...
最新文章
- 有n个学生选修了c语言程序设计这门课程,C语言程序设计报告学生选修课系统(18页)-原创力文档...
- 最近想问题想的睡不着,上来郁闷下!
- socket_循环发送消息
- EasyUI中Messager消息框的简单使用
- 【飞秋】进一步完善 -- GEF创建助手工具条
- 笔记-计算机软件技术基础(一)资源管理技术-操作系统
- 关于focus的概念
- 最大的连续子段和的O(n)解法
- 链表(创建,插入,删除和打印输出
- ASP.NET 4新增功能(一) ASP.NET核心服务
- 从shell(终端)中退出python
- cadence16.6安装教程
- 常用NMEA0183的报文解析
- 动力电池系统介绍(八)——继电器
- linux怎么做ppapi工具,如何在Linux上构建PPAPI插件?
- 含有一个量词的命题的否命题_第三节:简单的逻辑联结词、全称量词与存在量词...
- Server Tomcat v7.0 Server at localhost failed to start.
- 华信云SMS短信平台介绍
- KendoUI学习笔记
- 微软搜购诺基亚是这样的吗
热门文章
- 【转载】Understanding When to use RabbitMQ or Apache Kafka
- 单元测试 Spring
- Java 数据库编程 ResultSet 的 使用方法
- 基于 Lerna 管理 packages 的 Monorepo 项目最佳实践
- vc++源码免杀特殊技巧
- 解决RTMP推送时间戳问题引起HLS切片不均匀导致手机浏览器播放卡顿的问题
- #!/usr/bin/env python作用
- C#程序通过模板自动创建Word文档.doc
- 创业的一些挫见之第二家公司失败记录
- VS2013/2012 下无法打开 源 文件“stdafx.h”的解决方法