HDU2897( 巴什博奕变形)
邂逅明下
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2592 Accepted Submission(s): 1205
Problem Description
当日遇到月,于是有了明。当我遇到了你,便成了侣。
那天,日月相会,我见到了你。
并且,大地失去了光辉,你我是否成侣?这注定是个凄美的故事。
(以上是废话)
小t和全部世俗的人们一样。期待那百年难遇的日食。驻足街头看天,看日月渐渐走近,小t的脖子那个酸呀(他坚持这个姿势已经有半个多小时啦)。他低下仰起的头。环顾四周。
忽然发现身边竟站着位美丽的mm。天渐渐暗下,这mm在这街头居然如此耀眼,她是天使吗?站着小t身边的天使。
小t对mm惊呼:“缘分呐~~”。
mm却毫不含糊:“是啊。500年一遇哦!
”(此后省略5000字….)
小t赶紧向mm要联系方式,可mm说:“我和你玩个游戏吧,赢了,我就把我的手机号告诉你。”小t,心想天下哪有题目能难倒我呢,便满口答应下来。mm開始说游戏规则:“我有一堆硬币。一共7枚,从这个硬币堆里取硬币,一次最少取2枚,最多4枚。假设剩下少于2枚就要一次取完。
我和你轮流取。直到堆里的硬币取完,最后一次取硬币的算输。我玩过这个游戏好多次了。就让让你。让你先取吧~”
小t掐指一算。不正确呀,这是不可能的任务么。
小t露出得意的笑:“还是mm优先啦。呵呵~”mm霎时愣住了,想是对小t的反应出乎意料吧。
她却也不生气:“好小子。挺聪明呢。要不这样吧。你把我的邮箱给我,我给你发个文本。每行有三个数字n,p。q,表示一堆硬币一共同拥有n枚。从这个硬币堆里取硬币,一次最少取p枚,最多q枚。假设剩下少于p枚就要一次取完。
两人轮流取。直到堆里的硬币取完。最后一次取硬币的算输。对于每一行的三个数字,给出先取的人是否有必胜策略,假设有回答WIN,否则回答LOST。
你把相应的答案发给我。假设你能在今天晚上8点曾经发给我正确答案。也许我们明天下午能够再见。”
小t二话没说,将自己的邮箱给了mm。当他兴冲冲得赶回家。上网看邮箱,哇。mm的邮件已经到了。他发现文本长达100000行,每行的三个数字都非常大,可是都是不超过65536的整数。
小t看表已经下午6点了,要想手工算出全部结果,看来是不可能了。你能帮帮他,让他再见到那个mm吗?
Input
不超过100000行,每行三个正整数n,p。q。
Output
相应每行输入,按前面介绍的游戏规则,推断先取者是否有必胜策略。输出WIN或者LOST。
Sample Input
7 2 4 6 2 4
Sample Output
LOST WIN
这题目和正常得巴什博奕不太一样,可是事实上本质也没有区别非常多。
我们这样考虑。
当n%(p+q)==0,那么先手必胜。策略是 先手取q个,之后每一轮后手取i个。先手则取p+q-i个,一轮拿走p+q个,那么而最后一轮肯定是后手取p个。
当n%(p+q)=k<=p,那么先手取i,后手取p+q-i,所以最后一轮必定是先手取k个。
当n%(p+q)=k>p&&n%(p+q)=k<=q时。那么先手取p个。此时变成上一种情况,而先后手交换。所以先手必胜。
/***********************************************************
> OS : Linux 3.13.0-24-generic (Mint-17)
> Author : yaolong
> Mail : dengyaolong@yeah.net
> Time : 2014年10月25日 星期六 12时46分14秒
**********************************************************/
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
using namespace std; int main()
{
int n, p, q;
while ( scanf ( "%d%d%d", &n, &p, &q ) != EOF )
{
int t = n % ( p + q );
if ( t == 0 )
{
cout << "WIN" << endl;
}
else if ( t <= p )
{
cout << "LOST" << endl;
}
else
{
cout << "WIN" << endl;
}
}
}
z
HDU2897( 巴什博奕变形)的更多相关文章
- HDU 2897 邂逅明下(巴什博奕变形)
巴什博奕的变形,与以往巴什博奕不同的是,这里给出了上界和下界,原先是(1,m),现在是(p,q),但是原理还是一样的,解释如下: 假设先取者为A,后取者为B,初始状态下有石子n个,除最后一次外其他每次 ...
- Hdu 1517 巴什博奕变形
易知2-9为先手胜 继续递推下去 10-18 后手胜 再推发现19-162先手胜 即发现有9(9) 18(2*9) 162(9*2*9)..... #include<bits/stdc++.h& ...
- hdu2897 巴什博奕
n%(q+p)==0,也就是说先手必胜; n%(q+p)<=p,先手必输; n%(q+p)==k if(k>p&&k<=q)先手必胜; if(k>p&& ...
- NIM游戏,NIM游戏变形,威佐夫博弈以及巴什博奕总结
NIM游戏,NIM游戏变形,威佐夫博弈以及巴什博奕总结 经典NIM游戏: 一共有N堆石子,编号1..n,第i堆中有个a[i]个石子. 每一次操作Alice和Bob可以从任意一堆石子中取出任意数量的石子 ...
- codeforces gym 100694 M The Fifth Season (巴什博奕)
题目链接 一直觉得巴什博奕是最简单的博弈遇到肯定没问题,结果被虐惨了,看完标程错了10多遍都没反应过来,当然标程题解和代码的意思也写反了,但是还是想对自己说一句mdzz,傻啊!!!这道题很不错,我觉得 ...
- HDU 2188 悼念512汶川大地震遇难同胞――选拔志愿者(巴什博奕)
选拔志愿者 题意: 对于四川同胞遭受的灾难,全国人民纷纷伸出援助之手,几乎每个省市都派出了大量的救援人员,这其中包括抢险救灾的武警部队,治疗和防疫的医护人员,以及进行心理疏导的心理学专家.根据要求,我 ...
- HDU 1851 (巴什博奕 SG定理) A Simple Game
这是由n个巴什博奕的游戏合成的组合游戏. 对于一个有m个石子,每次至多取l个的巴什博奕,这个状态的SG函数值为m % (l + 1). 然后根据SG定理,合成游戏的SG函数就是各个子游戏SG函数值的异 ...
- HDU 2149-Public Sale(巴什博奕)
Public Sale Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit ...
- (step8.2.4)hdu 1846(Brave Game——巴什博奕)
题目大意:输入一个整数t,表示测试用例是.接着输入2个整数n,m.分别表示这堆石头中石头的个数,和每次所能取得最大的石头数.判断那一方为赢家 解题思路: 1)这是一道简单的巴什博弈: 所谓巴什博弈,是 ...
随机推荐
- 项目之socket
客户端socket 客户端套接字完成的任务很统一,发送请求,接收请求结果 可以封装成一个方法 使用的tcp协议存在粘包问题,故需要自定义报头 import json import struct #项目 ...
- leetcode-1-basic
leetcode-algorithm 1. Two Sum 解法:循环,试呗..简单粗暴.. class Solution { public: vector<int> twoSum(vec ...
- shell-code-6-输入输出重定向
解释: 1. 文件描述符0通常是标准输入(STDIN,终端),1 是标准输出(STDOUT,终端),2 是标准错误输出(STDERR). 2. 如果希望 stderr 追加到 file 文件末尾,可以 ...
- C语言文件操作 FILE结构体
内存中的数据都是暂时的,当程序结束时,它们都将丢失.为了永久性的保存大量的数据,C语言提供了对文件的操作. 1.文件和流 C将每个文件简单地作为顺序字节流(如下图).每个文件用文件结束符结束,或者在特 ...
- 基于顺序链表的栈的顺序存储的C风格实现
头文件: #ifndef _SEQSTACK_H_ #define _SEQSTACK_H_ typedef void SeqStack; //创建一个栈 SeqStack* SeqStack_Cre ...
- div+css居中
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 紫书第五章训练2 F - Compound Words
F - Compound Words You are to find all the two-word compound words in a dictionary. A two-word compo ...
- 此坑待填 离散化思想和凸包 UVA - 10173 Smallest Bounding Rectangle
Smallest Bounding Rectangle Given the Cartesian coordinates of n(>0)2-dimensional points, write a ...
- HackerRank# Candies
原题地址 LeetCode上也有这道题,直接扫一遍就行了,连数组都不用开,感觉像是蕴含了某种动归的思想在里面,要不怎么是个动归题呢 代码: #include <cmath> #includ ...
- 学习系列 - 马拉车&扩展KMP
Manacher(马拉车)是一种求最长回文串的线性算法,复杂度O(n).网上对其介绍的资料已经挺多了的,请善用搜索引擎. 而扩展KMP说白了就是是求模式串和主串的每一个后缀的最长公共前缀[KMP更像是 ...