hdu 2897 邂逅明下
题目链接:点这里
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。则有:
当n<=p时,显然是必败状态。
然后所有的能转化成必败状态的状态就是必胜状态。所以有:
当p+1<=n<=p+q时显然是必胜状态。
然后接着往后面推导一些就可以显然得到:
k*(p+q)+p+1<=n<=(k+1)*(p+q)的时候就是必胜状态,其他情况就是必败状态。所以就直接让n对(p+q)
取模,然后就直接输出就行了。大概就是这样吧,自己推推就出来了。
【代码】
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string.h>
#include<algorithm>
#include<vector>
#include<cmath>
#include<stdlib.h>
#include<time.h>
#include<stack>
#include<set>
#include<map>
#include<queue>
#include<sstream>
using namespace std;
#define rep0(i,l,r) for(int i = (l);i < (r);i++)
#define rep1(i,l,r) for(int i = (l);i <= (r);i++)
#define rep_0(i,r,l) for(int i = (r);i > (l);i--)
#define rep_1(i,r,l) for(int i = (r);i >= (l);i--)
#define MS0(a) memset(a,0,sizeof(a))
#define MS1(a) memset(a,-1,sizeof(a))
#define MSi(a) memset(a,0x3f,sizeof(a))
#define sin1(a) scanf("%d",&(a))
#define sin2(a,b) scanf("%d%d",&(a),&(b))
#define sll(a) scanf("%lld",&(a))
#define sll2(a,b) scanf("%lld%lld",&(a),&(b))
#define sdo(a) scanf("%lf",&(a))
#define sdo2(a,b) scanf("%lf%lf",&(a),&(b))
#define inf 0x3f3f3f3f
#define lson i<<1,l,mid
#define rson ((i<<1)|1),mid+1,r
#define uint unsigned int
typedef pair<int,int> PII;
#define A first
#define B second
#define pb push_back
#define MK make_pair
#define ll long long
template<typename T>
void read1(T &m)
{T x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}m = x*f;
}
template<typename T>
void read2(T &a,T &b)
{read1(a);read1(b);
}
template<typename T>
void read3(T &a,T &b,T &c)
{read1(a);read1(b);read1(c);
}
template<typename T>
void out(T a)
{if(a>9) out(a/10);putchar(a%10+'0');
}
template<typename T>
void outn(T a)
{if(a>9) out(a/10);putchar(a%10+'0');puts("");
}
using namespace std;
///---------------------------------------------------------------------------------
int main()
{
// freopen("in.txt","r",stdin);int n,p,q;while(sin1(n)!=EOF){read2(p,q);n%=(p+q);if(n>0&&n<=p)puts("WIN");elseputs("LOST");}return 0;
}
hdu 2897 邂逅明下相关推荐
- HDU 2897 邂逅明下(简单博弈)
题目链接 和经典那个报数博弈差不多,在仔细的纸上写写前面的几种情况后,猜想出规律,1Y.PS:思考时间不算长,也不算短,中规中矩. 0 - p - p+q - 2p +q - 2(p+q).. ...
- 杭电2897邂逅明下邂逅明下
邂逅明下 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- hdu2897邂逅明下——博弈sg函数的应用
邂逅明下 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- D - 邂逅明下 HDU - 2897(有点水平的巴什博奕)
当日遇到月,于是有了明.当我遇到了你,便成了侣. 那天,日月相会,我见到了你.而且,大地失去了光辉,你我是否成侣?这注定是个凄美的故事.(以上是废话) 小t和所有世俗的人们一样,期待那百年难遇的日食. ...
- HDU 2897 (博弈 找规律) 邂逅明下
根据博弈论的两条规则: 一个状态是必胜状态当且仅当有一个后继是必败状态 一个状态是必败状态当且仅当所有后继都是必胜状态 然后很容易发现从1开始,前p个状态是必败状态,后面q个状态是必胜状态,然后循环往 ...
- HDU 4521 小明系列问题——小明序列 LIS+动态规划
HDU 4521小明系列问题--小明序列 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...
- hdu 2897 巴什博弈变形
题目来源: http://acm.hdu.edu.cn/showproblem.php?pid=2897 分析: n % (p + q) == 0 先手赢. 策略为: A 拿 q , B 拿任意 k ...
- HDU 2096 小明A+B(%的运用)
传送门: 小明A+B Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- hdu 4501 小明系列故事——买年货 多重背包
小明系列故事--买年货 Time Limit: 500 ...
最新文章
- 荣耀6 原生Android,荣耀6 (移动4G) 官方原生简约实用 流畅省电 杜比音效 网速显示-刷机之家...
- Android中Uri的使用
- 画出18*18的棋盘以及用不同颜色绘制出同心圆(python实现)
- Matlab---傅里叶变换---通俗理解(二)
- 解读Dataphin流批一体的实时研发
- ubuntu19.10升级
- CSS text-indent 属性
- arc073F Many Moves
- 用贝叶斯定理解决三门问题并用Python进行模拟(Bayes‘ Rule Monty Hall Problem Simulation Python)
- Google Maps API 进级:GoogleMaps中显示画中画
- python中除以0的处理方法
- 优盘在计算机上无法显示,u盘在电脑上识别不出来怎么办_u盘在电脑不显示如何修复-win7之家...
- 参加51CTO学院软考培训感想
- matlab步进电机模糊pid和BP神经网络控制
- 113道C语言题目,超经典的~~~
- 六十星系之11紫微破军坐丑未
- 亥姆霍兹线圈主要用途概述
- 第12课 Altium Designer20(AD20)+VESC6.4实战教程:原理图最后验证(北冥有鱼)
- 20176408李俊 查找技术
- text/template与html/template的区别
热门文章
- es父子结构查询_探索ES-嵌套对象和父子对象(四)
- java酷炫代码_Java8 中有趣酷炫的小技巧
- 情人节送ta一朵独一无二的玫瑰花
- 虾皮马来西亚热销产品有哪些?
- 粒子摇摆 shader
- 智能手机怎么玩java游戏_智能手机可以在普通手机上玩Java游戏吗?
- quartus频率计 时钟设置_频率计实验报告.doc
- 【verilog学习】Verilog语言中的或(|和||)
- 论文阅读:social lstm:Human Trajectory Prediction in Crowded Spaces
- 跨考计算机英语自我介绍,跨专业考研英语自我介绍