首页 > 其他分享 >kuangbin 专题35 博弈论(I)

kuangbin 专题35 博弈论(I)

时间:2022-09-28 20:47:17浏览次数:68  
标签:main cout int 博弈论 namespace 35 kuangbin using include

Play a game

题目:从一个n*n的角落出发,每次移动到相邻的,而且没有经过的格子上。谁不能操作了谁输。
  结论就是n为偶数,先手赢,奇数,后手赢。大佬思路    

Brave Game

巴什博弈: 有一堆n个物品,两个人轮流从这堆物品中取物,规定每次可以任意取1至m个,取到最后一个的人获胜。   如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,那么后者必胜。 如果n=(m+1)r+s,(r为任意自然数,s<=m),那么先取者只要拿走s个物品,如果后取者拿走k(k<=m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)*(r-1)个,始终保持这样的取法,那么先取者必定获胜。  
#include<bits/stdc++.h>
using namespace std;
int main()
{
        int T;
        cin >> T;
        while(T --) {
            int n, m;
            cin >> n >> m;
        if(n % (m + 1)) cout << "first\n";
        else cout << "second\n";
    }
    return 0;
} 

 同类题目:HDU - 2188     参考博客

 

Public Sale

巴什博弈翻版
#include<bits/stdc++.h>
using namespace std;
int main() {
    int n, m;
    while (~scanf("%d%d", &m, &n)) {

        if (m % (n + 1) == 0) {
            cout << "none";
        } else {
            if (n >= m) {
                for (int i = m; i <= n; i ++) {
                    cout << i;
                    if (i != n) cout << " ";
                }
            } else
                cout << m % (n + 1);
        }
        cout << "\n";
    }
    return 0;
}

 

 

kiki's game

自己推出来的状态, 太厉害了吧  
#include<bits/stdc++.h>
using namespace std;
int main() {
    int n, m;
    while (cin >> n >> m && n && m) {
        if(m & 1 && n & 1) {
            cout << "What a pity!" << "\n";
        }
        else cout << "Wonderful!" << "\n";
    }
    return 0;
}

 

 

取石子游戏

  威佐夫博弈: 有两堆各若干个物品,两个人轮流从任一堆取至少一个或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。     用二维数组理解:推导过程类似上一道题 讲解视频   结论:假设两堆石子为(x,y)(其中x<y)那么先手必败,当且仅当$\left (y - x \right )\ast \frac{\left (\sqrt 5 + 1 \right )}{2}= x$。 其中的$\frac{\left (\sqrt 5 + 1 \right )}{2}$实际就是1.618,黄金分割数!   参考博客  
#include<bits/stdc++.h>
using namespace std;

int main()
{
    int n, m;
    while(~scanf("%d%d", &n, &m)) {
        if(n > m) swap(n, m);
        int ans = (m - n) * (sqrt(5) + 1) / 2.0;
        if(ans == n) cout << 0 << "\n";
        else cout << 1 << "\n";
    }
    
    return 0;
}

 

     

标签:main,cout,int,博弈论,namespace,35,kuangbin,using,include
From: https://www.cnblogs.com/coding-inspirations/p/16739463.html

相关文章

  • Educational Codeforces Round 135 (Rated for Div. 2) - E. Red-Black Pepper
    exgcdProblem-E-Codeforces题意给\(n\;(n<=3*10^5)\)个菜,每个菜可以加红辣椒或黑辣椒,分别可以获得\(c[i],d[i]\)分;有\(m\;(m<=3*10^5)\)个商店,第i个商店包......
  • P3592 [POI2015] MYJ 洗车店
    P3592[POI2015]MYJ洗车店点击查看代码//此题与人的区间[a,b]有关:区间DP;将[l,p-1],[p+1][r]的区间递归计算,经过p的区间//f[l][r][k]表示l<=a<=b<=r的洗车店的价......
  • [UselessFlag]我要爆刷博弈论呃呃呃啊啊啊——————!
    两次网络赛(ccpc,icpc)全被基础博弈论卡死了,感觉能写出来至少能前进几百名(对博弈论这方面恰好也不太擅长,准备学习一些小知识+从cf1300的博弈论题开始刷上1800~2000反之一想......
  • P6835 [Cnoi2020]线形生物 题解
    通过这道题可以看出来pz根本不会期望考虑期望线性性质,设\(E_{x\toy}\)表示从\(x\)走到\(y\)的期望步数,那么有\(E_{1\ton+1}=\sum_{i=1}^nE_{i\toi+1}\),因此考......
  • 35th 2022/8/9 模拟赛总结24
    这次可还行?又是发呆2h,然后亿脸懵逼,但是居然没有掉下去难道我的实力真的上来了?!!这一个暑假眼看就在机房中见到了尽头——8/17,然后作业也直接选择“鬼压床”,上来硬刚,规划......
  • OpenJudge 1.5.35:求出e的值
    35:求出e的值总时间限制:1000ms内存限制:65536kB描述利用公式e=1+1/1!+1/2!+1/3!+...+1/n!求e。输入输入只有一行,该行包含一个整数n(2<=n<=15),表示计......
  • 力扣1235——规划兼职工作
    1235.规划兼职工作难度困难你打算利用空闲时间来做兼职工作赚些零花钱。这里有 n 份兼职工作,每份工作预计从 startTime[i] 开始到 endTime[i] 结束,报酬为 ......
  • CF 教育场 135 题解
    比赛链接A题ColoredBalls:Revisited(签到)给定\(n\)种颜色的球,其中颜色\(i\)的球的数量是\(cnt_i\),保证\(\sum\limits_{i=1}^ncnt_i\)是奇数。在一次操作中,我......
  • P5356 [Ynoi2017] 由乃打扑克
    纪念一下人生第一道Ynoi题目链接题意是个人都看得懂吧。。。。。。solution看到Ynoi,想到什么?分块卡常......
  • 这个Python 0day 已存在15年,已影响超过35万个开源项目
    这个Python0day已存在15年,已影响超过35万个开源项目https://mp.weixin.qq.com/s/-00LEYzwa9HFg3Oam7LJqw这个Python0day已存在15年,已影响超过35万个开源项目RavieL......