BZOJ 2463 谁能赢呢? (博弈论)

BZOJ 2463 谁能赢呢? (博弈论)的相关文章

[BZOJ - 2463] [中山市选2009] 谁能赢呢?【“博弈论”】

题目链接:BZOJ - 2463 题目分析 这道题的题解是,由于两人都采取最优策略,所以最后一定所有格子都会被走到.(Why..表示不懂..哪位神犇可以给我讲一下QAQ) 于是..就变成了判断 n*n 的奇偶性,也就是判断 n 的奇偶性.. 代码 #include <cstdio> using namespace std; int main() { int n; while (true) { scanf("%d", &n); if (n == 0) break; i

BZOJ 2463: [中山市选2009]谁能赢呢?【博弈】

这题不科学~~本以为鬼谷子的钱袋是能在BZOJ写的最短的程序了,这题还要短…..好吧,思考难度神马的还是有点的(至少对我这种蒟蒻来说).很明显这是道博弈论的题目,在纸上画出了n=1~4的博弈树,发现bob和alice是交替出现的…0.0 当时就在想不会这么巧吧.忍不住百度了下解题,果然是这样的,不过解题上说结论归纳可得....弱弱的写一个自己的理解.设小明和小红交替下棋为一个周期,则根据规则一个周期内小红和小明下的棋的形状将是一个1*2的长方形,很容易得出n*n的棋盘当且仅当n为偶数时能被1*2

bzoj 2463: [中山市选2009]谁能赢呢?

我曹,以为是什么什么SG函数,什么神奇的博弈论,我曹,不会啊(雾) 看了一眼题解,短小,直接关掉开始写奇偶.233 1 #include<bits/stdc++.h> 2 #define N 100005 3 #define LL long long 4 #define inf 0x3f3f3f3f 5 #define ls tr[x][0] 6 #define rs tr[x][1] 7 using namespace std; 8 inline int ra() 9 { 10 int x=

BZOJ 2463: [中山市选2009]谁能赢呢?[智慧]

明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过.谁不能移动石头了就算输.假如小明先移动石头,而且两个选手都以最优策略走步,问最后谁能赢? 法1:打表瞎猜,奇负偶胜 法2:看别人题解 http://www.cnblogs.com/iwtwiioi/p/4161161.html 首先对于n是偶数,一定能被1*2的骨牌覆盖!所以从起点开始,先手一定走的是骨牌的

BZOJ 2927 POI1999 多边形之战 博弈论

题目大意:给定一个凸多边形的三角剖分,其中一个三角形被涂成了黑色,每次可以割一刀割下一个三角形,割下黑色三角形的人胜利,求是否先手必胜 这傻逼题我想了50min...50min! 把这个图转对偶图之后会变成一棵树... 问题转化成了给定一棵树有一个黑色节点每次删除一个叶节点,删除黑色节点的人胜利 如果黑色节点初始就是一个叶节点,那么先手必胜 否则当一个人面临一个黑色节点连接两个白色节点的状态时必败,而没有人会考虑越过这个状态(一旦让黑色只连接一个白色节点的话对方就直接赢了),因此答案只与n的奇偶

[BZOJ 1188] [HNOI2007] 分裂游戏 【博弈论|SG函数】

题目链接:BZOJ - 1188 题目分析 我们把每一颗石子看做一个单个的游戏,它的 SG 值取决于它的位置. 对于一颗在 i 位置的石子,根据游戏规则,它的后继状态就是枚举符合条件的 j, k.然后后继状态就是 j 与 k 这两个游戏的和. 游戏的和的 SG 值就是几个单一游戏的 SG 值的异或和. 那么还是根据 SG 函数的定义 , 即 SG(u) = mex(SG(v)) ,预处理求出每个位置的 SG 值.一个位置的 SG 值与它后面的位置有关,是取决于它是倒数第几个位置,那么我们预处理求

BZOJ 1982: [Spoj 2021]Moving Pebbles [博弈论 对称]

给你N堆Stone,两个人玩游戏. 每次任选一堆,首先拿掉至少一个石头,然后移动任意个石子到任意堆中. 谁不能移动了,谁就输了... 以前在poj做过已经忘记了... 构造对称,选最多的一堆往其他堆分构造对称局面,先手必胜 一开始就对称,先手必败 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using

bzoj 1115: [POI2009]石子游戏Kam -- 博弈论

1115: [POI2009]石子游戏Kam Time Limit: 10 Sec  Memory Limit: 162 MB Description 有N堆石子,除了第一堆外,每堆石子个数都不少于前一堆的石子个数.两人轮流操作每次操作可以从一堆石子中移走任意多石子,但是要保证操作后仍然满足初始时的条件谁没有石子可移时输掉游戏.问先手是否必胜. Input 第一行u表示数据组数.对于每组数据,第一行N表示石子堆数,第二行N个数ai表示第i堆石子的个数(a1<=a2<=……<=an). 1

BZOJ 1982 Spoj 2021 Moving Pebbles 博弈论

题目大意:给定n堆石子,每次可以选择一堆石子,拿走任意个,然后将堆中剩余石子移动任意个到任意一些堆里,不能操作者为输,求是否先手必胜 必败状态为:n为偶数,且将石子数相同的堆两两配对可以配成n2对 例如: 6 1 1 4 4 5 5 这就是一个先手必败的初始状态 证明: 首先证明这个状态是必败的 由于堆可以两两配对,因此无论先手做什么,后手都可以对另一个堆做同样的事情,故先手必败 对于一种其他状态,先手可以用一步将状态变为必败状态,故其他状态下先手必胜 如果初始有奇数堆石子,那么先手可以将最小的