博弈
Master.Yi
学习他人,提升自己;
提升自己,帮助他人。
展开
-
Nim积
下面几张图是引入,截自2009年论文《从“k倍动态减法游戏”出发探究一类组合游戏问题》翻转四个格子。设 SG(x,y)=x⊗ySG(x,y)=x\otimes ySG(x,y)=x⊗yx⊗y=mex{(a⊗y)⊕(x⊗b)⊕(a⊗b) ∣ 0≤a<x,0≤b<y}x\otimes y=mex\{(a\otimes y)\oplus(x\otimes b)\oplus(a\otimes b)~|~0\le a<x,0\le b<y\}x⊗y=mex{(a原创 2020-07-29 20:38:55 · 369 阅读 · 0 评论 -
HDU3446 daizhenyang s chess【棋盘走路博弈问题】
前置知识:棋盘走路博弈问题例:LOJ#6033. 「雅礼集训 2017 Day2」棋盘游戏问题描述:棋盘上有一个棋子,两个人轮流走,每次可以往相邻四个方向走,不能碰到障碍或已经走过的点,不能走的人输,问先手是否必胜。分析:首先将棋盘黑白染色形成二分图,然后将可以互相到达的格子连边。如果这个二分图有完美匹配,那么先手走匹配边,后手只能走非匹配边,先手必胜。如果没有完美匹配,那么看起点是否一定在最大匹配中(二分图最大匹配关键点):如果起点一定在最大匹配中,那么先手走匹配边,后手只能走非匹配边,如原创 2020-06-10 14:27:07 · 433 阅读 · 0 评论 -
20200315 博弈笔记
例1:暴力的做法是O(nm)O(nm)O(nm)的。用bitset按照斜对角线一条一条的做是O(nm/w)O(nm/w)O(nm/w)的。结论:对于 i,j≥3i,j\ge3i,j≥3,有 f[i][j]=f[i−1][j−1]f[i][j]=f[i-1][j-1]f[i][j]=f[i−1][j−1]。即从第三行第三列开始每个点与对角线上的前一个点相同。通过反证法可简单证明。于是求出第...原创 2020-03-15 23:28:51 · 153 阅读 · 0 评论 -
模拟赛20200312【区间gcd(DP),棋盘博弈模型,树拓扑序逆序对总数】
T1:题解:因为限制了区间gcd相等,直接DP的话需要知道当前区间以及它的gcd:Code(现在的人写线段树懒标记都不下传的吗。。。):#include<bits/stdc++.h>#define maxn 50005#define fi first#define se secondusing namespace std;const int mod = 99...原创 2020-03-12 18:00:23 · 247 阅读 · 0 评论 -
BZOJ 2927: [Poi1999]多边形之战 【博弈分析】
题目描述:多边形之战是一个双人游戏。游戏在一个有n个顶点的凸多边形上进行,这个凸多边形的n-3条对角线将多边形分成n-2个三角形,这n-3条对角线在多边形的顶点相交。三角形中的一个被染成黑色,其余是白色。双方轮流进行游戏,当轮到一方时,他必须沿着画好的对角线,从多边形上切下一个三角形。切下黑色三角形的一方获胜。题目分析:嗯,题面的沿着画好的对角线的意思是,当你切一个三角形的时候,必须保证它的...原创 2019-03-18 22:56:17 · 159 阅读 · 0 评论 -
BZOJ 4147: [AMPPZ2014]Euclidean Nim 【分类讨论】
为什么都是些分类讨论神题啊啊啊啊啊。。。只好再次膜拜Po姐→\rarr→BZOJ 4147 AMPPZ2014 Euclidean Nim 博弈论+数论#include<cstdio>#include<cctype>#include<cstring>#include<map>#include<algorithm>#defin...原创 2019-03-18 21:41:40 · 166 阅读 · 0 评论 -
BZOJ 1982: [Spoj 2021]Moving Pebbles 【另一类石子问题】
题目分析:然而我并没有用高精度?然而scanf会WA,用读入优化就算爆了也是相等的。所以就水过了~#include<cstdio>#include<cctype>#include<cstring>#include<map>#include<algorithm>#define maxn 105using namespa...原创 2019-03-18 20:40:02 · 218 阅读 · 0 评论 -
BZOJ 3895 取石子 博弈论+记忆化搜索
转PoPoQQQ神犇的博客学习一发。把石子数为1的堆分开考虑,sigoyi。#include<cstdio>#include<cctype>#include<cstring>#include<algorithm>#define maxn 105using namespace std;inline void read(int &...原创 2019-03-18 19:55:09 · 256 阅读 · 0 评论 -
BZOJ 1022: [SHOI2008]小约翰的游戏John【Anti-SG游戏与SJ定理】
题目分析:Anti-SG游戏(决策集合为空者胜)针对这道题口胡一通。游戏分三种情况:(下面的异或和指的是所有堆的SG值的异或和)每堆只有一个石子,此时若异或和为0(偶数堆),则先手必胜 (A)若异或和为1(奇数堆),则先手必败 (B)只有一堆石子数>1,(C)若有奇数堆石子数为1的,那么先手把当前堆取完即可,先手必胜若有偶数堆石子数为1的,那么先手把当前堆取成...原创 2019-03-18 12:09:24 · 193 阅读 · 0 评论 -
BZOJ 1299: [LLH邀请赛]巧克力棒 【SG函数/博弈分析/高斯消元】
题目传送门题目分析:法一:非常暴力且通用的O(3n)O(3^n)O(3n)算法直接枚举后继算出SG值设f[s]f[s]f[s]表示还有s状态的巧克力棒未取出的SG值,g[s]g[s]g[s]表示s状态的巧克力棒的nim和,那么f[s]=mex{f[t]&nbsp;xor&nbsp;g[s−t]}f[s]=mex\{f[t]~xor~g[s-t]\}f[s]=mex{f[t]&nbsp;x...原创 2019-03-17 21:42:57 · 288 阅读 · 0 评论 -
BZOJ 2463: [中山市选2009]谁能赢呢? 【构造?】
题目传送门题目分析:若n为偶数,用1*2的骨牌把棋盘铺满,最开始处在一个骨牌中,先手每次可以走完一个骨牌,后手则需要走到一个新的骨牌,直到最后没有新的骨牌可走,所以先手必胜。若n为奇数,则用骨牌铺完后会空出一个格子,所以后手必胜。推荐一个更给力的棋盘博弈问题:「雅礼集训 2017 Day2」棋盘游戏Code:。。。不用了吧...原创 2019-03-17 18:36:27 · 104 阅读 · 0 评论 -
BZOJ 1115: [POI2009]石子游戏Kam 【阶梯nim】
题目传送门阶梯nim相当于是倒过来的阶梯nim,作差求奇数阶异或和。Code:#include<cstdio>#include<cctype>inline void read(int &a){ char c;while(!isdigit(c=getchar())); for(a=c-'0';isdigit(c=getchar());a=a...原创 2019-03-17 12:41:46 · 138 阅读 · 0 评论 -
BZOJ 2281: [Sdoi2011]黑白棋 【另类nim游戏】
题目传送门题目分析:题面似乎有点问题,如果白棋可以往左走,黑棋可以往右走,这游戏可能下不完。所以白棋只能往右走,黑棋只能往左走。又因为相邻的棋子颜色不同,所以这就变成了k/2个nim游戏的组合,同时有一点变化,就是每次不是只能从一堆中拿,而是至多d堆。把每一堆的石子数量看成二进制,那么这个游戏的必败状态就是n堆石子每个二进制位上为1的堆数都是(d+1)的倍数。反之则是必胜态。最后的状态...原创 2019-03-17 12:27:07 · 142 阅读 · 0 评论 -
BZOJ 3576: [Hnoi2014]江南乐【SG函数】
题目传送门题目分析:每堆石子是独立的,可以求出每堆的SG函数再异或起来。所以考虑预处理(或者记忆化搜索)SG函数。设石子数量为nnn,枚举它分成的堆数iii,那么较小堆的石子数是⌊ni⌋\lfloor\frac ni\rfloor⌊in⌋(较大堆是⌊ni⌋\lfloor\frac ni\rfloor⌊in⌋+1),设n/in/in/i的余数是kkk,那么大堆的数量是kkk,小堆的数量是...原创 2019-03-16 12:22:24 · 125 阅读 · 0 评论