BZOJ 3106: [cqoi2013]棋盘游戏】的更多相关文章

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3106 对抗搜索,f[x][y][a][b][c][d]表示当前谁走,走了几步,及位置. (因为脑残+手残+眼拙写了一坨if还瞪了好久...最后还是这种做法靠谱... #include<cstring> #include<iostream> #include<algorithm> #include<cstdio> #define maxn 109 #def…
Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 859  Solved: 356[Submit][Status][Discuss] Description 一个n*n(n>=2)棋盘上有黑白棋子各一枚.游戏者A和B轮流移动棋子,A先走. l         A的移动规则:只能移动白棋子.可以往上下左右四个方向之一移动一格. l         B的移动规则:只能移动黑棋子.可以往上下左右四个方向之一移动一格或者两格. 和通常的“吃子”规则一样,当某…
3106: [cqoi2013]棋盘游戏 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 544  Solved: 233 Description 一个n*n(n>=2)棋盘上有黑白棋子各一枚.游戏者A和B轮流移动棋子,A先走. l         A的移动规则:只能移动白棋子.可以往上下左右四个方向之一移动一格. l         B的移动规则:只能移动黑棋子.可以往上下左右四个方向之一移动一格或者两格. 和通常的“吃子”规则一样,当某游戏者把…
3106: [cqoi2013]棋盘游戏 链接 分析: 极大极小搜索 + 记忆化. 代码 #include<bits/stdc++.h> using namespace std; typedef long long LL; const int INF = 1e9; ][][][][][]; ] = {,,,-,,,,-}; ] = {,-,,,,-,,}; int n; int Minimax(int player,int step,int a,int b,int c,int d) { ) r…
Description 一个\(n \times n(n \le 2)\)棋盘上有黑白棋子各一枚.游戏者A和B轮流移动棋子,A先走. A的移动规则:只能移动白棋子.可以往上下左右四个方向之一移动一格. B的移动规则:只能移动黑棋子.可以往上下左右四个方向之一移动一格或者两格. 和通常的"吃子"规则一样,当某游戏者把自己的棋子移动到对方棋子所在的格子时,他就赢了.两个游戏者都很聪明,当可以获胜时会尽快获胜,只能输掉的时候会尽量拖延时间.你的任务是判断谁会赢,需要多少回合. 比如\(n=2…
http://www.lydsy.com/JudgeOnline/problem.php?id=3106 白棋如果第一步不能赢,那么一定输 因为可以黑棋走的距离比白棋大,黑棋可以下一步吃掉白棋,也可以下一步离开白棋的吃子范围 n才20,我们可以dfs搜索所有的局面求黑棋取胜的回合数 记录当前状态到游戏结束的回合数 如果现在白棋走,那它要尽可能的拖延时间,所以就是所有的后继状态取大 如果现在黑棋走,那它要尽快的取胜,所以就是所有的后继状态取小 边界是当两个棋子到同一位置时,根据前面的分析,应该必须…
3105: [cqoi2013]新Nim游戏 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 535  Solved: 317[Submit][Status][Discuss] Description 传统的Nim游戏是这样的:有一些火柴堆,每堆都有若干根火柴(不同堆的火柴数量可以不同).两个游戏者轮流操作,每次可以选一个火柴堆拿走若干根火柴.可以只拿一根,也可以拿走整堆火柴,但不能同时从超过一堆火柴中拿.拿走最后一根火柴的游戏者胜利. 本题的游戏…
3108: [cqoi2013]图的逆变换 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 627  Solved: 415[Submit][Status][Discuss] Description 给一个n结点m条边的有向图D,可以这样构造图E:给D的每条边u->v,在E中建立一个点uv,然后对于D中的两条边u->v和v->w,在E中从uv向vw连一条有向边.E中不含有其他点和边. 输入E,你的任务是判断是否存在相应的D.注意,D可以有重…
3107: [cqoi2013]二进制a+b Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 995  Solved: 444[Submit][Status][Discuss] Description 输入三个整数a, b, c,把它们写成无前导0的二进制整数.比如a=7, b=6, c=9,写成二进制为a=111, b=110, c=1001.接下来以位数最多的为基准,其他整数在前面添加前导0,使得a, b, c拥有相同的位数.比如在刚才的例子中…
[题目分析] 神奇的题目,两人都可以第一次取走足够多堆的石子. nim游戏的规则是,如果异或和为0,那么就先手必输,否则先手有必胜策略. 所以只需要剩下一群异或和为0就可以了. 先排序,线性基扫一遍即可(保留最多的不为0的堆) [代码] #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <set> #include <map&g…