HDU - 1846 Brave Game 巴什博弈(入门解释)

简单 博弈 入门

题意不用解释了,

对于博弈论的问题,总有必胜的情况的,能够推出 必胜的的情况就行了,既然两个人都是选取最优策略

这个最优策略 我的理解是 对于必胜者来说的-①,说完这个题 再做解释


看这个题,我们可能会轻松的想到 要是这一堆石子 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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值