HDU 4764 Stone(博弈)

原创 2015年11月19日 23:51:59

题意:两个人轮流取数,比前一人大且最多比他大k,最后不能取到比n小的数的人输。

思路:巴什博奕裸题。取石子游戏换了个说法,本质是一样的。

巴什博奕(Bash Game):
只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。
显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的取法,那么先取者肯定获胜。总之,要保持给对手留下(m+1)的倍数,就能最后获胜。

注意题目说的是比n小的数,所以总数为n - 1。

#include <algorithm>
#include <iostream>
#include <sstream>
#include <cstring>
#include <cstdio>
#include <vector>
#include <string>
#include <queue>
#include <stack>
#include <cmath>
#include <set>
#include <map>
using namespace std;

typedef long long LL;
#define mem(a, n) memset(a, n, sizeof(a))
#define rep(i, n) for(int i = 0; i < (n); i ++)
#define REP(i, t, n) for(int i = (t); i < (n); i ++)
#define FOR(i, t, n) for(int i = (t); i <= (n); i ++)
#define ALL(v) v.begin(), v.end()
#define si(a) scanf("%d", &a)
#define sii(a, b) scanf("%d%d", &a, &b)
#define siii(a, b, c) scanf("%d%d%d", &a, &b, &c)
#define pb push_back
#define eps 1e-8
const int inf = 0x3f3f3f3f, N = 1e3 + 5, MOD = 1e9 + 7;

int T, cas = 0;
int n, m;

int main(){
#ifdef LOCAL
    freopen("/Users/apple/input.txt", "r", stdin);
//	freopen("/Users/apple/out.txt", "w", stdout);
#endif
	
    while(sii(n, m), n + m) {
    	printf("%s\n", (n - 1) % (m + 1) ? "Tang" : "Jiang");
    }
    
    return 0;
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

HDU 4764 Stone (巴什博弈)

Stone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm...

HDU 4764-Stone(博弈)

题意: J 和 T 轮流说数字

hdu 4764(stone) 巴什博弈

题目链接:点击打开链接、 题目大意:T和J,轮流写数字,前面一个人写x那么后面一个人写y 要使得1=n则输了 题目分析:博弈(bash game),转化。考虑你n-1的情况。如果某人在n-1处了,则另...

HDU 5996 dingyeye loves stone (树形博弈)

dingyeye loves stone                                                                  Time Limit: 20...

HDU 5996 dingyeye loves stone(阶梯尼姆博弈)——BestCoder Round #90

dingyeye loves stoneTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe...

HDU 1729 Stone Game(博弈 + SG函数)

传送门Stone GameTime Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tota...

【HDU 5996 dingyeye loves stone】+ 尼姆博弈

dingyeye loves stone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Ot...

解题报告:HDU1729 Stone Game SG博弈

Stone Game Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total...

博弈_______Stone Game(hdu 4387)

Stone Game Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total...

HDU 5996 BestCoder Round #90 1002 dingyeye loves stone 博弈

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5996 题意: 有一棵n个节点的有根树,节点编号为0到n-1,根为0号节点。游戏开始时,第i个节点上...
  • dpppBR
  • dpppBR
  • 2016年12月17日 22:33
  • 226
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU 4764 Stone(博弈)
举报原因:
原因补充:

(最多只允许输入30个字)