nyojb 2359 巴什博弈变形

http://acm.nyist.me/JudgeOnline/problem.php?id=2359

2359: 巴什博弈?

时间限制: 1 Sec  内存限制: 30 MB
提交: 237  解决: 43
[提交][状态][讨论版]

题目描述

有n个石子,有两人轮流从中取石子,最少a个最多b个,谁没得取(即当轮到他取是已经没有石子可以取了,也就是说此时石子数量小于a)谁赢,现在,LLM先取,问你LLM能赢吗

输入

每个测试样例少于100000组测试数据

每组测试样例第一行三个整数n,a,b

1<=a<=b,n<=100000000

输出

如果LLM能赢,输出YES,否则输出NO

样例输入

1 1 1
2 1 2

样例输出

NO
YES

几乎从未做过博弈的题目,只是上学期写过两道模板题,这种题目就是找到必败态/必胜态,这道题目要求只要轮到你取且石子数<a那么你就是胜利者,那么到最后遇到什么数量的石子必然会输呢,答案是[a,2*a),因为无论怎样取剩余的石子一定小于a(最小是0),那么对手必然会胜利,所以这是一个必败态,令x(-[a,2*a),那么x+(a+b)*k也是必败态,无论你取走多少只要对手取走a+b-i,最后面临x的人必然是你,所以必败,那我们就可以根据这个范围来讨论了,    当a<=n%(a+b)<2*a时候必败;    当n%(a+b)<a的时候,先手只要取走一个b,那么对手剩下的就是(a+b)*(k-1)+(x+a),由于x<a所以a<=x+a<2*a转化为了必败态。    当a+b>n%(a+b)>2*a的时候,因为n%(a+b)-a<b,我们可以取走n%(a+b)-a个给对手剩下 a+(a+b)*k,又是必败态。巧妙地数学,虽然每次数学题都是一脸懵逼- -
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define LL long long
 4 int main()
 5 {
 6     int n,i,j,a,b;
 7     while(scanf("%d%d%d",&n,&a,&b)==3){
 8         int t=n%(a+b);
 9         if(t<a) puts("YES");
10         else if(t<2*a) puts("NO");
11         else puts("YES");
12     }
13     return 0;
14 }
 
时间: 2024-12-20 09:54:01

nyojb 2359 巴什博弈变形的相关文章

hdu 2149 Public Sale(巴什博弈变形)

Public Sale Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3978    Accepted Submission(s): 2424 Problem Description 虽然不想,但是现实总归是现实,Lele始终没有逃过退学的命运,因为他没有拿到奖学金.现在等待他的,就是像FarmJohn一样的农田生涯. 要种田得有田才行

hdu 2897(巴什博弈变形)

邂逅明下 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4069    Accepted Submission(s): 1872 Problem Description 当日遇到月,于是有了明.当我遇到了你,便成了侣.那天,日月相会,我见到了你.而且,大地失去了光辉,你我是否成侣?这注定是个凄美的故事.(以上是废话)小 t和所有世俗的人

POJ 2368 Buttons(巴什博弈变形)

题目链接 #include<iostream> #include<cstdio> #include<algorithm> using namespace std; int a[1005]; int main() { int n; while(~scanf("%d",&n)) {//要后者胜,只要s=0,那么n=(m+1)*r,输出最小的m即可 int len=0; bool flag=0; for(int i=1;i*i<=n;i++)

hdu2897(巴什博弈变形)

邂逅明下 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5303    Accepted Submission(s): 2468 Problem Description 当日遇到月,于是有了明.当我遇到了你,便成了侣.那天,日月相会,我见到了你.而且,大地失去了光辉,你我是否成侣?这注定是个凄美的故事.(以上是废话)小t和所有世俗的人们

HDU 2897 邂逅明下(巴什博弈变形)

邂逅明下 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5668    Accepted Submission(s): 2653 Problem Description 当日遇到月,于是有了明.当我遇到了你,便成了侣.那天,日月相会,我见到了你.而且,大地失去了光辉,你我是否成侣?这注定是个凄美的故事.(以上是废话)小t和所有世俗的人们

nyoj-2359 巴什博弈?

2359: 巴什博弈? 时间限制: 1 Sec  内存限制: 30 MB提交: 250  解决: 47[提交][状态][讨论版] 题目描述 有n个石子,有两人轮流从中取石子,最少a个最多b个,谁没得取(即当轮到他取是已经没有石子可以取了,也就是说此时石子数量小于a)谁赢,现在,LLM先取,问你LLM能赢吗 输入 每个测试样例少于100000组测试数据 每组测试样例第一行三个整数n,a,b 1<=a<=b,n<=100000000 输出 如果LLM能赢,输出YES,否则输出NO 样例输入

邂逅明下(巴什博弈+hdu2897)

H - 邂逅明下 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 2897 Description 当日遇到月,于是有了明.当我遇到了你,便成了侣. 那天,日月相会,我见到了你.而且,大地失去了光辉,你我是否成侣?这注定是个凄美的故事.(以上是废话) 小t和所有世俗的人们一样,期待那百年难遇的日食.驻足街头看天,看日月渐渐走近,小t的脖子

HDU 2149————巴什博弈

Description 虽然不想,但是现实总归是现实,Lele始终没有逃过退学的命运,因为他没有拿到奖学金.现在等待他的,就是像FarmJohn一样的农田生涯. 要种田得有田才行,Lele听说街上正在举行一场别开生面的拍卖会,拍卖的物品正好就是一块20亩的田地.于是,Lele带上他的全部积蓄,冲往拍卖会. 后来发现,整个拍卖会只有Lele和他的死对头Yueyue. 通过打听,Lele知道这场拍卖的规则是这样的:刚开始底价为0,两个人轮流开始加价,不过每次加价的幅度要在1-N之间,当价格大于或等于

hdoj 2188 悼念512汶川大地震遇难同胞——选拔志愿者 【巴什博弈】

题意:... 策略:最简单的典型的巴什博弈. 代码: #include<stdio.h> int main() { int n, m; int t; scanf("%d", &t); while(t --){ scanf("%d%d", &n, &m); if(n%(m+1) == 0){ printf("Rabbit\n"); } else printf("Grass\n"); } } 题