【BZOJ 3106】【CQOI 2013】棋盘游戏

2023-10-07 15:58
文章标签 游戏 棋盘 bzoj 2013 cqoi 3106

本文主要是介绍【BZOJ 3106】【CQOI 2013】棋盘游戏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

貌似叫对抗搜索?其实应该和博弈论差不多吧,只不过博弈论是针对当前局面做出唯一判断,而对抗搜索是通过搜索加以决策。
对于本题,显然白棋腿短,如果第一步吃不掉黑棋就再也吃不到了,所以白棋的策略就是尽量拖延时间。
再来看黑棋,显然黑棋如果第一步不被吃掉是必胜的,因为黑棋会不断地缩小白棋的活动范围(换个方法想,黑棋腿长,一定不会输,又不会出现和棋局面,所以黑必胜),所以黑棋的策略是尽快吃掉白棋。
dfs(x,y,a,b,c,d)时,x=0表示白走,x=1表示黑走;y表示走了几步;a和b是白棋坐标;c和d是黑棋坐标。注意用数组存一下已经出现的状态。

#include<cmath>
#include<cstdio>
#include<vector>
#include<queue>
#include<cstring>
#include<iomanip>
#include<stdlib.h>
#include<iostream>
#include<algorithm>
#define ll long long
#define inf 1000000000
#define mod 1000000007
#define N 100000
#define fo(i,a,b) for(i=a;i<=b;i++)
#define fd(i,a,b) for(i=a;i>=b;i--)
using namespace std;
int n,a,b,c,d;
int f[2][60][21][21][21][21];
int dfs(int x,int y,int a,int b,int c,int d)
{if (y > 3 * n) return inf;if (a == c && b == d) return x?inf:0;if (f[x][y][a][b][c][d]) return f[x][y][a][b][c][d];int ans;if (x)//黑棋的策略是尽快吃掉白棋,时间要短{ans = inf;if (c > 1) ans = min(ans,dfs(0,y+1,a,b,c-1,d));if (c > 2) ans = min(ans,dfs(0,y+1,a,b,c-2,d));if (c < n) ans = min(ans,dfs(0,y+1,a,b,c+1,d));if (c < n - 1) ans = min(ans,dfs(0,y+1,a,b,c+2,d));if (d > 1) ans = min(ans,dfs(0,y+1,a,b,c,d-1));if (d > 2) ans = min(ans,dfs(0,y+1,a,b,c,d-2));if (d < n) ans = min(ans,dfs(0,y+1,a,b,c,d+1));if (d < n - 1) ans = min(ans,dfs(0,y+1,a,b,c,d+2));}else//白棋的策略是尽量拖延时间,时间要长{ans = 0;if (a > 1) ans = max(ans,dfs(1,y+1,a-1,b,c,d));if (a < n) ans = max(ans,dfs(1,y+1,a+1,b,c,d));if (b > 1) ans = max(ans,dfs(1,y+1,a,b-1,c,d));if (b < n) ans = max(ans,dfs(1,y+1,a,b+1,c,d));}ans++;f[x][y][a][b][c][d] = ans;return ans;
}
int main()
{scanf("%d%d%d%d%d",&n,&a,&b,&c,&d);if (abs(a-c) + abs(b-d) <= 1) printf("WHITE 1\n");else printf("BLACK %d\n",dfs(0,0,a,b,c,d));return 0;
}

这篇关于【BZOJ 3106】【CQOI 2013】棋盘游戏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/158834

相关文章

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类

国产游戏崛起:技术革新与文化自信的双重推动

近年来,国产游戏行业发展迅猛,技术水平和作品质量均得到了显著提升。特别是以《黑神话:悟空》为代表的一系列优秀作品,成功打破了过去中国游戏市场以手游和网游为主的局限,向全球玩家展示了中国在单机游戏领域的实力与潜力。随着中国开发者在画面渲染、物理引擎、AI 技术和服务器架构等方面取得了显著进展,国产游戏正逐步赢得国际市场的认可。然而,面对全球游戏行业的激烈竞争,国产游戏技术依然面临诸多挑战,未来的

火柴游戏java版

代码 /*** 火柴游戏* <p>* <li>有24根火柴</li>* <li>组成 A + B = C 等式</li>* <li>总共有多少种适合方式?</li>* <br>* <h>分析:</h>* <li>除去"+"、"="四根,最多可用火柴根数20根。</li>* <li>全部用两根组合成"1",最大数值为1111。使用枚举法,A和B范围在0~1111,C为A+B。判断</li>** @

国产游戏行业的崛起与挑战:技术创新引领未来

国产游戏行业的崛起与挑战:技术创新引领未来 近年来,国产游戏行业蓬勃发展,技术水平不断提升,许多优秀作品在国际市场上崭露头角。从画面渲染到物理引擎,从AI技术到服务器架构,国产游戏已实现质的飞跃。然而,面对全球游戏市场的激烈竞争,国产游戏技术仍然面临诸多挑战。本文将探讨这些挑战,并展望未来的机遇,深入分析IT技术的创新将如何推动行业发展。 国产游戏技术现状 国产游戏在画面渲染、物理引擎、AI

rtmp流媒体编程相关整理2013(crtmpserver,rtmpdump,x264,faac)

转自:http://blog.163.com/zhujiatc@126/blog/static/1834638201392335213119/ 相关资料在线版(不定时更新,其实也不会很多,也许一两个月也不会改) http://www.zhujiatc.esy.es/crtmpserver/index.htm 去年在这进行rtmp相关整理,其实内容早有了,只是整理一下看着方

第四次北漂----挣个独立游戏的素材钱

第四次北漂,在智联招聘上,有个小公司主动和我联系。面试了下,决定入职了,osg/osgearth的。月薪两万一。 大跌眼镜的是,我入职后,第一天的工作内容就是接手他的工作,三天后他就离职了。 我之所以考虑入职,是因为 1,该公司有恒歌科技的freex平台源码,可以学学,对以前不懂的解解惑。 2,挣点素材钱,看看张亮002的视频,他用了6000多,在虚幻商城买的吸血鬼游戏相关的素材,可以玩两年。我

nyoj 1038 纸牌游戏

poj 的一道改编题,说是翻译题更恰当,因为只是小幅度改动。 一道模拟题,代码掌控能力比较好,思维逻辑清晰的话就能AC。 代码如下: #include<stdio.h>#include<string.h>#include<algorithm>using namespace std;struct node{char c[5];int rk;char da[5];int nu

如果出一个名叫白神话悟空的游戏

最近黑神话由于与原著不符引起了原著派的争议。 所以我在摸鱼的时候想到如果游科或者某个别的公司“痛改前非”不夹带私货完全复刻吴承恩百回版剧情制作一个“重走西游路”的游戏,会有一个什么样的销量?(设定为原著派已经多方渠道认证,此游戏的确没有夹带私货,绝大部分复刻了原著剧情) 游戏玩法我想了几类 超长线性有岔路蜈蚣形状地图,蜈蚣的腿部是探索区域和支线,重走西游路线,开篇就是开始取经前唐玄宗御弟cg

《黑暗之魂2:原罪学者》是什么类型的游戏 《黑暗之魂》可以在苹果Mac电脑上玩吗?

在宏大的世界观游戏中,《黑暗之魂2:原罪学者》脱颖而出,以其探索性和挑战性征服了全球玩家的心灵。下面我们来看看《黑暗之魂2:原罪学者》是什么类型的游戏,《黑暗之魂2:原罪学者》可以在苹果电脑玩吗的相关内容。 一、《黑暗之魂2:原罪学者》是什么类型的游戏 《黑暗之魂2:原罪学者》作为《黑暗之魂2》的增强版和重制版,是一款FromSoftware制作、BANDAI NAMCO和FromSoft

简单取石子游戏~博弈

很坑爹的小游戏,至于怎么坑爹,嘎嘎~自己研究去吧~! #include<stdio.h>#include<windows.h>#include<iostream>#include<string.h>#include<time.h>using namespace std;void Loc(int x,int y);/*定位光标*/void Welcome(); /*创建欢迎界面*/