HDU 5754 博弈(威佐夫博弈)

博弈论习题集(由易到难) 博弈论习题集(由易到难) 在做题目之前如果一点也不懂还需要看一下博弈论的基础知识三大基础博弈 HDU 1846 Brave Game#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; typedef long long LL;int read(){ 阅读详情

这个题除了皇后的可以套用一下威佐夫博弈以外其他的都可以找规律找出来,主要为了学习一下威佐夫博弈,
威佐夫博弈:给两堆石子,每次都可以从其中一堆石子中取n个石子或者从两堆石子中都取n个石子,最后将石子取完的获胜。
解是根据:

           int k = abs(n - m);
            n = (int)((double)k * (1.0 + sqrt(5.0)) / 2.0);
            if (n == m) printf("G\n");
            else printf("B\n");

来判断谁获胜的,但是这个题可能是因为精度问题,用这个直接判断AC不了。=.=

也可以根据规律来打个威佐夫博弈的表

int x = 1, y = 1;
    for(int i = 1; ; ++i) {
        int add = 1;
        while(vis[x + add] || vis[y + 1 + add]) add++;
        x += add, y += add + 1;
        if(x >= maxn || y >= maxn) break;
        vis[x] = vis[y] = true;
        matc[x][y] = true;
        matc[y][x] = true;
    }

AC代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <cmath>
#include <cstdlib>
#include <queue>
using namespace std;

const int eps = 1e-6;
const int maxn = 1200 + 50;

int s[maxn][maxn];
int T;
int n,m;

int knight(int x,int y) {
    if(x == y && (x - 1) % 3 == 0) return 0;
    else if((x + 1 == y + 2) && (x % 3 == 0)) return 1;
    else if((y + 1 == x + 2) && (y % 3 == 0)) return 1;
    return -1;
}

bool matc[maxn][maxn];
bool vis[maxn];

int main() {

    int x = 1, y = 1;
    for(int i = 1; ; ++i) {
        int add = 1;
        while(vis[x + add] || vis[y + 1 + add]) add++;
        x += add, y += add + 1;
        if(x >= maxn || y >= maxn) break;
        vis[x] = vis[y] = true;
        matc[x][y] = true;
        matc[y][x] = true;
    }

    scanf("%d",&T);
    while(T--) {
        int t;
        scanf("%d%d%d",&t,&n,&m);
        if (t == 4) {
            if (matc[n][m]) printf("G\n");
            else printf("B\n");


//            int k = abs(n - m);
//            n = (int)((double)k * (1.0 + sqrt(5.0)) / 2.0);
//            if (n == m) printf("G\n");
//            else printf("B\n");


        } else if (t == 2) {
            if (n == m) printf("G\n");
            else printf("B\n");
        } else if (t == 1) {
            if ((n & 1) && (m & 1)) printf("G\n");
            else printf("B\n");
        } else {
            int t = knight(n, m);
            if (t == -1) printf("D\n");
            else if (t == 1) printf("B\n");
            else printf("G\n");
        }
    }
    return 0;
}
Ubuntu下NVIDIA驱动安装全攻略:从报错到完美运行nvidia-smi的完整流程 本文提供了在Ubuntu系统中安装NVIDIA驱动的完整解决方案,重点解决因驱动版本冲突、内核模块未加载或Secure Boot安全启动导致的`nvidia-smi`报错问题。通过彻底清理旧驱动、处理Secure Boot、选择兼容版本并正确安装,最终确保驱动完美运行。 阅读详情

相关推荐

AI for Science:GNN预测分子性质全流程详解与工业实践

从分子表示到工业落地,一文掌握图神经网络在药物研发与材料设计中的核心实战近年来,的浪潮正深刻变革着传统科研范式。在药物研发与材料设计领域,作为核心环节,已从传统的实验试错转向基于图神经网络(GNN)的智能计算。本文将深入解析GNN预测分子性质的,涵盖数据准备、模型设计、训练优化到工业部署,并揭秘前沿技术与实战案例。

datacanvas2426的博客 1674

HDU-5754 Life Winner Bo (博弈论)

题目: http://acm.hdu.edu.cn/showproblem.php?pid=5754 题意: n*m的棋盘,一枚棋子要从左上到右下,两个人轮流移动,只能向包含当前行列的左下移动,谁移动到最后一步谁胜利,有四种棋子: 1 king 向周围八个方向移动一步 2 castle 向2*3的矩阵的另一个角移动 3 knight 移动到同一行或者同一列的任意位置 4 quee

MyWorld 645

别再为reg2icg的setup违例头疼了!手把手教你用ICC2/Innovus这3招搞定(附实战数据对比)

本文详细介绍了在ICC2/Innovus中解决reg2icg的setup违例的三种高效方法,包括早期时钟树预估、精准控制时钟延迟与门控检查以及ICG专用优化选项组合。通过实战数据对比,展示了不同策略的效果差异,帮助工程师快速优化时序路径,提升芯片性能。

weixin_42569329的博客 404

HDU 5754 Life Winner Bo (博弈)

Life Winner Bo Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 68    Accepted Submission(s): 21 Problem Description Bo is a "Life Win

Dream_M 1220

快速了解GPU分布通信技术:PCIe、NVLink与NVSwitch

PCIe(Peripheral Component Interconnect Express)是一种高速串行计算机扩展总线标准,广泛用于连接计算机的各种硬件设备。PCIe4.0是目前较为先进的版本,提供了高达64GB/s的带宽。InfiniBand是一种用于高性能计算的高速互连技术,通过交换机在节点之间直接创建一个专用的受保护通道。InfiniBand适配器通过PCIe接口连接到CPU,另一端通过InfiniBand网络端口连接到InfiniBand子网。

全世界的博客 7543

从仿真到器件:铌酸锂电光调制器Comsol建模避坑指南

本文详细介绍了铌酸锂电光调制器在Comsol中的建模全流程,涵盖晶体切向选择、材料参数配置、多物理场耦合等关键技术。通过实战案例和调试技巧,帮助工程师避开常见建模陷阱,提升仿真精度与效率,特别适用于高速光通信系统的器件设计与优化。

m2n3b4v5c6的博客 417

HDU 5754 Life Winner Bo(找规律 + 威佐夫博弈)--2016 Multi-University Training Contest 3

传送门Bo is a "Life Winner".He likes playing chessboard games with his girlfriend G. The size of the chessboard is N×MN\times M.The top left corner is numbered(1,1)(1,1) and the lower right corner is n

代码改变世界 2004

基于单目视觉的四旋翼定点降落——如何通过mavros控制pixhawk(二)

    一直拖了这么久没有更新,怪我太懒啦~~~ 今天要特别感谢舒仔仔同学,我的好队友帮我写了这篇博文。这篇文章主要讲了如何通过mavros来控制pixhawk。硬件逻辑是这样子,我们先搞一个odroid(土豪上TX2),再用usb线将odroid与pixhawk连接。所以,odroid发送控制指令来控制pixhawk飞行。pixhawk与外界的通信协议是mavlink。ROS下面有个包叫mavr...

zhengyuxin0507的博客 1万+

HDU - 5754 博弈 + 找规律

题意: G和B玩游戏,在n*m的棋盘上轮流移动一枚棋子,棋子一开始位置在(1,1),每次只能朝右下角移动,不同棋子类型移动的规则不同,现在两个人都采取最优策略,B先手,判断谁会赢。 思路: 先百度国际象棋移动规则,然后前三个根据规则画一画必胜态必败态就能找到规律,最后一个我是看不出来规律,反正n和m也不大,直接递推预处理了。 代码: #include using namespace s

Bahuia的博客 527

2.0 电子凸轮 西门子1500电子凸轮使用研究1

本文研究了S7-1500T电子凸轮同步控制技术,通过仿真实验得出以下结论:1)通过比例系数可调整凸轮曲线形状;2)解除同步需调用从轴其他运动指令;3)详细阐述了凸轮同步的5个实施步骤。重点分析了三种同步类型(主值距离同步、动态参数同步和直接同步)的特点及应用场景,并探讨了缩放系数、偏移量等参数对凸轮曲线的影响。同时介绍了凸轮应用模式及常见异常处理方法,为工程应用提供了重要参考。

qq_34047402的博客 808

六、数据资产平台功能架构

该架构图展示了一个功能完善的数据资产平台,它涵盖了数据资产管理的各个方面,从数据采集、模型设计、编目到使用和分析。通过该平台,企业可以更好地管理数据资产,提高数据利用效率,并为业务决策提供有力支持。

moton2017的博客 1625

hdu5754 Life Winner Bo 各种博弈(多校)

题意: 给你一个n∗m的棋盘,然后给你4种棋子,分别是: 1.王:能横着走,或者竖着走,或者斜着走,每次可以走1格 2.车:可以横着走或者竖着走,每次可以走无数格 3.马:走日字形,例如:如果现在在(1,1),可以走到(2,3),即先走一格直线,然后斜着走一格 4.王后:可以横着走,或者竖着走,或者斜着走,每次可以走无数格 所有棋子在走的时候只能向右或向下...

170

低功耗设计:如何计算power switch的数量?

power switch加多了漏电高,加少了ir drop会有问题,具体加多少合适要如何计算呢?这里可以给一个参考方式。 第一步,先选switch cell的类型 通常选用HVT类型的switch cell,优点是漏电更低,缺点也很明显,电阻大,压降也大,switch cell的大小选择,可以选择(开启电阻x面积)最小的switch cell,即单位面积提供最小并联电阻的cell类型。 第二步,计算数量 选好类型,确定了开启电阻,可以按照如下公式计算数量: Ron/Xnum • W/V = V•P

m0_61544122的博客 3570

[HDU 5754] Life Winner Bo (有平局的博弈+威佐夫博弈)

HDU - 5754 有一个 N×MN \times M的国际象棋棋盘,刚开始左上角有一个棋子 每次只能往右下角移动,谁先到达右下角谁就赢 如果无论如何也到不了右下角,就平局 有四种棋子,王、车、马、后 博弈四合一 王 打表即可 车 相当于两堆分别为 N−1N-1和 M−1M-1的石子的 NimmNimm游戏 马 有平局的游戏,规则如下 如果一个局面能取得胜利,那么先手

MisDeer's blog 472

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

hdu5754_找规律+威佐夫博弈

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5754 题意: t组数据, 每组数据三个数,c, n, m; c代表哪一种棋子,1是国王,2是车,3是马, 4是皇后,n 和m表示棋盘的大小 B和G两个人从(1, 1)开始, 谁先到(n, m)谁就赢,两个人都很smart 国王:2 * x的情况下,先手掌握了先机,(1, 1) --> ...

weixin_30505225的博客 124

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

hdu 5754 Life Winner Bo(威佐夫博弈)

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5754 Life Winner Bo Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 10...

weixin_30677475的博客 117

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

hdu5754Life Winner Bo <威佐夫博弈>

click~ 官方题解:我们依次分析每一种棋子。 ①王。 首先注意一个3*3的棋盘,开始在(1,1),问走到(3,3)谁有必胜策略。 穷举所有情况,容易发现这是后手赢。 对于NN和MM更大的情况,我们把横坐标每隔3、纵坐标每隔3的点都画出来,这些点都是符合后手胜的。  (因为无论先手怎么移动,后手都能重新移动到这些格子,直到到了终点) 如果初始点不在这些点

论菜鸟的自我修养。。。 344

博弈综合

题目:hdu5754 题意:有4种操作分别是: 1.king.每次横或者竖或者斜只能走一步 2.rook(castle).每次横或者竖能走若干步 3.knight.每步先横(竖)走一格,再斜走一格。或者每步先斜走一格,再横(竖)走一格 4.queen.每次横或竖或斜走若干步 然后这些操作对应的是国际象棋里面的一些操作(具体操作可以百度) 然后现在我们站在(1,1)点,要去往(N,M)点

Sleppypot的博客 530

HDU 5754 Life Winner Bo (各种博弈融合)

题目链接:HDU 5754 题面: Life Winner Bo Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 827    Accepted Submission(s): 309 Problem

David_Jett 1369

HDU 5754 Life Winner Bo(多校3 各种博弈)

这道题的四中走法相当于四种博弈,其实分开来看并不是很难,只是这道题把他们融合到一块了。很具有代表性。

铅笔头的博客 413

HDU 5754 Life Winner Bo 博弈

博弈4合1 车是nim博弈。王后是威佐夫博弈。王和骑士写两个1000*1000的预处理即可。 打sg表找规律。。 王随便做。 车是两堆石子的nim游戏 实际上车和骑士的必败状态都在对角线上。因为后手可以调整。 王后就是裸的威佐夫博弈 CODE #include <bits/stdc++.h> using namespace std; int main() { int T, o...

Ark 379

基础博弈

一、巴什博奕(Bash Game): 引入问题:有一堆n个物品,两人轮流从堆中取物品,每次取x个(1≤x≤m)。最后取光者为胜。 结论:当n%(m+1)!=0时,先手必胜。 原理:我们可以构造出n=(m+1)*t+s,(0<=s<m+1) 当s!=0时,先取者拿走s个,后取者拿走k个(1<=k<=m),那么先取者再拿走m+1-k个。结果还剩下(m+1)*(t-1)个。我...

RDJ_Widow的博客 914

HDU-5754-Life Winner Bo(博弈)

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5754 题意:一个n*m的棋盘,有四种棋子(国际象棋King, Queen, Rook, Knight)。起点在(1,1)先走到(n,m)获胜。 题解:  rook为2堆的nim,queen为典型的威佐夫博弈 我们依次分析每一种棋子。 ①王p。 首先注意一个3*3的棋盘,开

不会吃鱼的喵 300

hdu5754Life Winner Bo

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5754 题意:给定一个n*m的矩阵,有四种棋子(国际象棋的王,王后,骑士,车)。起点在(1,1)先走到(n,m)获胜。 分析:车是nim博弈。王后是威佐夫博弈。王和骑士写两个1000*1000的预处理即可。 代码: #include #include #include #include #inclu

Fsss 625

HDU5754 Life Winner Bo(混合博弈)

传送门 【题目分析】 一次将几种博弈混在一起,好题! 转换一下思路,将过程视作从两堆石子中取石子,一堆有(n-1)个,一堆有(m-1)个,走一步相当于在取石子。 首先看王的走法:可以向右向下向右下走,转换一下就是从一堆中取出1个石子或从两堆中同时取出1个石子。 分析一下,一次操作相当于改变一堆石子的奇偶性或同时改变两堆石子的奇偶性,最终目标是将两堆石子都变为0,那么就是说两堆石子都是偶数...

Michael_GLF的博客 371

hdu 5754 多校第3场

比赛的时候不知道如何把棋盘博弈转换为取石子博弈,并且在画马的PN表的时候出错了,没有遵从只N则P的规则,还有就是皇后的走法也没想到是威佐夫博弈,之前没做过,题量少。比完之后,结合别人的想法了解了把棋盘博弈转化为取石子博弈的方法: 附上代码: #include using namespace std; int a[1002][1002]; int n,m; int ok(int

ZQUSwansea的博客 419
上一篇: CodeForces 165D Beard Graph(树链剖分)
下一篇: POJ 3169(差分约束 + spfa模板)
THE___BEST
博客等级 码龄12年 10粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值