简单 博弈 入门
题意不用解释了,
对于博弈论的问题,总有必胜的情况的,能够推出 必胜的的情况就行了,既然两个人都是选取最优策略
这个最优策略 我的理解是 对于必胜者来说的-①,说完这个题 再做解释
看这个题,我们可能会轻松的想到 要是这一堆石子 n <= m ,那肯定是 first 胜,
如果要是 n > m 呢? 我们要造就的一种形势就是 其中一个人不管怎么选,另一个一定胜
我们 n > m 往下 推一步,n = m+1 的时候,不管 第一个人 取几个,第二个人都是 胜者
这就是一种必胜的形势,也是这个题的 关键点,,所以我们就看 这个形势是由第一个人造就的还是第二个人,
if n % (m+1) == 0 这样本身就是必胜局势(每局比赛,第二个人都让这局选取的数目是 m+1),相当与第二个人造就的,,第二个人胜
if n % (m+1) != 0 这样第一个人选取若干个,使之成为 必胜局势,第一个人早就这种必胜局势,那么第一个人是胜者
解释一下 ① :由这个题 可以看出来,选取的最优策略(必胜的局势) 都是胜者来维持的
(初学博弈,多练练再更新,欢迎路过神牛指点交流
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
const int maxn = 10000 + 7, INF = 0x7f7f7f7f, mod = 1e9+7;
int n, m;
int main() {
int T;
scanf("%d", &T);
for(int test = 1; test <= T; ++test) {
scanf("%d %d", &n, &m);
if(n%(m+1)) {
puts("first");
}
else puts("second");
}
return 0;
}