2463: [中山市选2009]谁能赢呢? Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1887  Solved: 1390[Submit][Status][Discuss] Description   小明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过.谁不能移动石头了就算输.假如小明先移动石头,而且两…
2463: [中山市选2009]谁能赢呢? Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1290  Solved: 944[Submit][Status][Discuss] Description 小明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过.谁不能移动石头了就算输.假如小明先移动石头,而且两个选手…
2463: [中山市选2009]谁能赢呢? Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2372  Solved: 1750[Submit][Status][Discuss] Description 小明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过.谁不能移动石头了就算输.假如小明先移动石头,而且两个选…
[中山市选2009]谁能赢呢? Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3014  Solved: 2165[Submit][Status][Discuss] Description   小明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过.谁不能移动石头了就算输.假如小明先移动石头,而且两个选手都以最…
题目链接:BZOJ - 2463 题目分析 这道题的题解是,由于两人都采取最优策略,所以最后一定所有格子都会被走到.(Why..表示不懂..哪位神犇可以给我讲一下QAQ) Upd:半群的神犇告诉我,并不是说所有格子都会被走到,而是这个是一个二分图,当点数为偶数的时候,存在完备匹配.但是还是不明白的说0.0 于是..就变成了判断 n*n 的奇偶性,也就是判断 n 的奇偶性.. 代码 #include <cstdio> using namespace std; int main() { int n…
好吧我能说这道题我是猜过去的么= =,看到只有一个数x,x=2时alice赢,就猜奇数bob赢,偶数alice赢,然后就稀里糊涂过了= = 后来找了http://www.haogongju.net/art/1875425才懂,把这个问题看成用2*1木板覆盖的问题= =真是蒟蒻 CODE: #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> using namesp…
明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过.谁不能移动石头了就算输.假如小明先移动石头,而且两个选手都以最优策略走步,问最后谁能赢? 法1:打表瞎猜,奇负偶胜 法2:看别人题解 http://www.cnblogs.com/iwtwiioi/p/4161161.html 首先对于n是偶数,一定能被1*2的骨牌覆盖!所以从起点开始,先手一定走的是骨牌的…
Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3110  Solved: 2250[Submit][Status][Discuss] Description   小明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过.谁不能移动石头了就算输.假如小明先移动石头,而且两个选手都以最优策略走步,问最后谁能赢?  …
这题不科学~~本以为鬼谷子的钱袋是能在BZOJ写的最短的程序了,这题还要短…..好吧,思考难度神马的还是有点的(至少对我这种蒟蒻来说).很明显这是道博弈论的题目,在纸上画出了n=1~4的博弈树,发现bob和alice是交替出现的…0.0 当时就在想不会这么巧吧.忍不住百度了下解题,果然是这样的,不过解题上说结论归纳可得....弱弱的写一个自己的理解.设小明和小红交替下棋为一个周期,则根据规则一个周期内小红和小明下的棋的形状将是一个1*2的长方形,很容易得出n*n的棋盘当且仅当n为偶数时能被1*2…
http://www.lydsy.com/JudgeOnline/problem.php?id=2463 好神的证明! 首先对于n是偶数,一定能被1*2的骨牌覆盖!所以从起点开始,先手一定走的是骨牌的另一端,后手一定走的是骨牌的前一端,因此无论何时,先手总是可以走.因此先手必胜. 如果n是奇数,那么去掉一格后一定能被1*2的骨牌覆盖,但是先手从左上角走,就进入了这个S态(必胜态),那么和上边的分析一样了,因此先手必败. 然后就是水题.. #include <cstdio> #include &…
Description小明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过.谁不能移动石头了就算输.假如小明先移动石头,而且两个选手都以最优策略走步,问最后谁能赢?Input    输入文件有多组数据.    输入第一行包含一个整数n,表示棋盘的规模.    当输入n为0时,表示输入结束. Output 对于每组数据,如果小明最后能赢,则输出”Alice”,…
Description   小明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过.谁不能移动石头了就算输.假如小明先移动石头,而且两个选手都以最优策略走步,问最后谁能赢?   Input     输入文件有多组数据.     输入第一行包含一个整数n,表示棋盘的规模.     当输入n为0时,表示输入结束.   Output 对于每组数据,如果小明最后能赢,…
http://www.lydsy.com/JudgeOnline/problem.php?id=2463 n为偶数时,一定可以被若干个1*2 矩形覆盖 先手每次从矩形的一端走向另一端,后手每次走向一个新的矩形 所以先手必胜 n为奇数时,先手走完一步后,剩下同n为偶数 所以先手必败 #include<cstdio> using namespace std; int main() { int n; while(scanf("%d",&n)!=EOF) { ; ) put…
二分图博弈 from BZOJ 1443 游戏(二分图博弈) - free-loop - 博客园 定义 1.博弈者人数为两人,双方轮流进行决策. 2.博弈状态(对应点)可分为两类(状态空间可分为两个集合),对应二分图两边(X集和Y集).任意合法的决策(对应边)使状态从一类跳转到另一类.(正是由于这个性质使得问题可以用二分图描述) 3.不可以转移至已访问的状态.(不可重复访问点) 4.无法转移者判负. 判定 不妨设起点在二分图的X集中,那么先手只能从X集移动到Y集,后手只能从Y集移动到X集.一次游…
2463: [中山市选2009]谁能赢呢? 题目:传送门 题解: 水体! n为偶数的话必能被1*2的矩形覆盖,那么因为一开始在左上角,所以先手一定可以先组成一个矩形,那么先手肯定必胜! n为奇数和上面相反,先手必输 代码: #include<cstdio> #include<cstring> using namespace std; int main() { int n; while(scanf("%d",&n)!=EOF) { )break; )pri…
高斯消元解异或方程组...然后对自由元进行暴搜.树形dp应该也是可以的... -------------------------------------------------------------------------------------- #include<cstdio> #include<cstring> #include<algorithm> #include<bitset>   using namespace std;   const in…
博弈论 bzoj-2463 中山市选-2009 题目大意:题目链接. 注释:略. 想法: 如果$n$是偶数的话就可以被多米诺骨牌恰好覆盖,这样的话只需要先手先走向(1,1)对应的第二段,后者必定会将棋子移动到多米诺骨牌的第一段.故先手必胜. 反之同理. Code: #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std;…
2463 思路: 博弈: 把先手和后手的走的两个格子看做一个1*2的方格: 如果n为偶数,那么棋盘一定可以被1*2的方格覆盖: 前端为先手,后端为后手: 那么,当还剩下一个1*2的方格时,先手一定可以走,而后手不能: 所以先手必胜: 当n为奇数时,反之: 来,上代码: #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace st…
感慨下汉堡的找水题能力… /************************************************************** Problem: 2463 User: zhuohan123 Language: C++ Result: Accepted Time:0 ms Memory:804 kb ****************************************************************/ #include <cstdio> us…
题目描述 小明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过.谁不能移动石头了就算输.假如小明先移动石头,而且两个选手都以最优策略走步,问最后谁能赢? 输入     输入文件有多组数据.     输入第一行包含一个整数n,表示棋盘的规模.     当输入n为0时,表示输入结束. 输出 对于每组数据,如果小明最后能赢,则输出”Alice”, 否则输出”Bob…
小明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过.谁不能移动石头了就算输.假如小明先移动石头,而且两个选手都以最优策略走步,问最后谁能赢? Input 输入文件有多组数据. 输入第一行包含一个整数n,表示棋盘的规模. 当输入n为0时,表示输入结束. Output 对于每组数据,如果小明最后能赢,则输出"Alice", 否则输出"Bob…
∵都是最优操作 ∴n*n=偶数时Bob赢,否则Alice赢 n*n的奇偶性等价于n的奇偶性. #include<cstdio> using namespace std; int n; int main() { ) { scanf("%d",&n); if(!n) break; puts((n&) ? "Bob" : "Alice"); } ; }…
题意:两个人在$n*n$的棋盘上玩游戏,一开始棋子在左上角,可以上下左右的走到没有走过的地方,最后不能走的那个输,两个人都采取最优决策问哪个赢 猜结论!$n$为偶数则先手赢,否则后手赢. 考虑用$1*2$的骨牌来覆盖棋盘,$n$为偶数就可以完全覆盖整个棋盘,每次总是先手在骨牌的一段,后手在骨牌的另一端,然后再由先手到另一个骨牌上,这样一定是先手赢.否则如果$n$变成奇数会空出来一块,就是后手获胜了. 好像很有道理 #include<cstdio> int n; int main() { whi…
Sol 树形DP. 听说有非常神奇的高斯消元的做法...orz... 然而我只会 \(O(n)\) 的树形DP. 首先一个点的状态只于他的父节点和子树有关,跟他 子树的子树 和 父亲的父亲 都没有任何关系. 这样就可以DP了. \(f[i][0/1][0/1]\) 表示\(i\)节点,点了 \(0/1\) 次,状态是 \(0/1\) (暗或亮). 然后就瞎转移就可以了,具体看代码吧. Update:一个点的子节点状态要求是一样的:要么全关,要么全开.这样就可以DP了. Code /*******…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2466 [题目大意] 给定一棵树,每个节点有一盏指示灯和一个按钮.如果节点的按扭被按了, 那么该节点的灯会从熄灭变为点亮(当按之前是熄灭的),或者从点亮到熄灭 并且该节点的直接邻居也发生同样的变化.开始的时候,所有的指示灯都是熄灭的. 请编程计算最少要按多少次按钮,才能让所有节点的指示灯变为点亮状态. [题解] 高斯消元枚举自由变元回代. [代码] #include <cstdio>…
题目大意:树上拉灯游戏 高斯消元解异或方程组,对于全部的自由元暴力2^n枚举状态,代入计算 这做法真是一点也不优雅... #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define M 110 using namespace std; int n,m; int f[M][M],is_free[M],tot; int ans[M],cnt; void…
难度在于读题 #include<cstdio> #include<algorithm> using namespace std; int a[1000005]; struct node{ int c,val; }e[1000005]; bool cmp(node a,node b){ return a.val>b.val; } int main(){ while (1){ int n,m; scanf("%d%d",&n,&m); if (…
同上一题.(应该可以树形dp,然而我不会... #include<cstdio> #include<cstring> #include<iostream> #include<bitset> #include<algorithm> using namespace std; #define REP(i,s,t) for(int i=s;i<=t;i++) #define dwn(i,s,t) for(int i=s;i>=t;i--) #…
2464: 中山市选[2009]小明的游戏 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 280  Solved: 124[Submit][Status] Description 小 明最近喜欢玩一个游戏.给定一个n * m的棋盘,上面有两种格子#和@.游戏的规则很简单:给定一个起始位置和一个目标位置,小明每一步能向上,下,左,右四个方向移动一格.如果移动到同一类 型的格子,则费用是0,否则费用是1.请编程计算从起始位置移动到目标位置的最小花费.…
BZOJ 2440 [中山市选2011]完全平方数 | 莫比乌斯函数 题面 找出第k个不是平方数的倍数的数(1不是平方数, \(k \le 10^9\)). 题解 首先二分答案,问题就转化成了求\([1, x]\)中有多少数不是平方数的倍数,设这个答案为\(Q(x)\). 根据容斥原理,\(Q(x)\)等于: [1, x] 0个质数的平方的倍数的数量(1的倍数的数量) [1, x] 1个质数的平方的倍数的数量 (如\(3^2=9\)的倍数的数量) [1, x] 2个质数的平方的倍数的数量 (如\…