首页 > 其他分享 >题解:P8887 [DMOI-R1] 柯基棋

题解:P8887 [DMOI-R1] 柯基棋

时间:2024-08-20 17:42:01浏览次数:12  
标签:int 题解 柯基棋 放在 seed 棋子 P8887 棋盘

本题题意

小 A 和小 B 在一个 \(n \times n\) 的棋盘里下柯基棋,当一个人不能再放下棋子时,他就输了。问谁会有必胜策略。

思路

先不考虑小 C 的捣乱。

分类讨论

  • 当 \(n\) 为奇数时,不难得出:当小 A 第一步放在棋盘的正中心时,以后不管小 B 放在哪里,小 A 只要放在它的对称处就行了。这样子,当棋盘上下不了棋子时,正好是小 B 的回合。


第一步,小 A 下在正中心,其所在行和列为该棋盘的对角线。

第二步,小 B 下。到第三步时,小 A 可以下在图中标注的位置,这里我们选择 \(1\) 号位置。

第四步,小 B 下。由于其对称性,小 B 可以放在标注的地方。但由于刚才确定了对称轴是第五列,所以放在 \(3\) 号位置。

这里我们把未放置棋子但不能放棋子的格子用红色标记出来。

接着走。

最后,在棋盘不能放置棋子时,是偶数步,小 B 的回合,因此小 B 输了,小 A 赢了。

  • 当 \(n\) 为偶数时,不管小 A 下在哪里,小 B 也只要它的放在对称处。这样子,当棋盘上下不了棋子时,正好是小 A 的回合。


这里,对称轴是第 \(3\) 个格子和第 \(4\) 个格子之间的边界线。由于现在是奇数步,是小 A 的回合,故此小 B 获胜。

再来说小 C

根据小 C 每次捣乱的之后棋盘边长增加 \(2\),可得知 \(n\) 的奇偶性性是不变的。又因为 x[i]=x[i-1]+((xor_shift(seed)%(unsigned long long)(2*2)+1))*2;,可知每次捣乱时是都是在偶数步,所以先后顺序不变。

AC code

#include<bits/stdc++.h>
//#define endl '\n'
using namespace std;
int main(){
	int T;
	cin>>T;
	while(T--){
		int n,q,seed;
		cin>>n>>q>>seed; 虽然q和seed没有对棋盘产生任何变化,但该输的还是要输
		if(n%2==1) cout<<"A won"<<endl; A可以放在正中间则可以嬴
		else cout<<"B won"<<endl;
	}
	return 0;
}

标签:int,题解,柯基棋,放在,seed,棋子,P8887,棋盘
From: https://www.cnblogs.com/bubble-sort/p/18369924

相关文章

  • 题解:CF644A Parliament of Berland
    本题题意有\(n\)个议员,编号为\(1\simn\),就坐在\(a\timesb\)的礼堂里,求如何安排座位能够使得任意两个相邻的座位上的议员奇偶性不相同。思路无解情况当\(n>a\timesb\)时,必定无法满足,则直接输出-1。有解情况打表找规律。我们发现,只要让奇数行正着就坐,偶数......
  • 题解:CF1032B Personalized Cup
    本题题意给一个字符串,将其分成等长度的字符串,但是分的行数不能超过\(5\)行,每行的长度不得超过\(20\)。如果无法等分的,则用*来补足长度。输出在行数最小的前提下,列数最少的一种方案。思路由于字符串范围最多也就\(20\times5\),直接分类讨论即可。ACcode#include<bits/st......
  • 题解:P9944 [USACO21FEB] Comfortable Cows B
    思路由于每次输入\(x\)和\(y\)只改变其上下左右的值,所以每次只要更新其相邻的值即可。当某个位置相邻的奶牛数达到\(3\)时,舒适度加一。当某个位置相邻的奶牛数达到\(4\)时,舒适度减一。注意:每增加一头奶牛以后,如果该位置相邻正好有三头奶牛,则舒适度也要加一。ACcod......
  • 题解:P8690 [蓝桥杯 2019 国 B] 填空问题
    试题\(\mathrm{A}\):平方序列枚举\(x\),通过\(x^2-2019^2\)求出它们的公差\(c\),再计算\(x^2+c\)是否为完全平方数即可。code#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;signedmain(){ for(inti=2020;1==1;i++){ intc=i*i-2019*2019; i......
  • Android逆向题解-攻防世界-Ph0en1x-100
    jeb反编译apk主要代码是if那个判断,getFlag取字符串用getSecret加密,和输入字符串encrypt加密后再getSecret加密,进行比较,两边同样都是getSecret加密,那比较可以简化成this.getFlag()==this.encrypt(s)。也就是输入字符经过encrypt加密后等于getFlag的字符串即可。protec......
  • ABC077D / ARC084B Small Multiple 题解
    AtCoderLuogu考虑数位和的来源:从\(1\)开始进行若干次\(\times10\)和\(+1\)操作可以得到任意正整数,此时\(+1\)操作的次数为其数字和。注意不能连续进行\(10\)次及以上\(+1\)操作。不难列出转移,设\(f(i)\)表示\(i\)的数字和,则:\(f(10i)=f(i)\)\(f(i+1)=......
  • [AtCoder - tdpc_game] :ゲーム 题解
    [AtCoder-tdpc_game]:ゲーム题解一道小清新\(dp\)题。定义\(dp_{i,j}\)为第一堆山还有\(i\)个物品,第二堆山还有\(j\)个物品,すぬけ君能取得物品的最大价值。由于只能取两座山最上面的物品,假设当前两座山分别有\({x,y}\)个物品,すぬけ君选后只能有两种情况,分别为\(d......
  • 题解:P10279 [USACO24OPEN] The 'Winning' Gene S
    思路建议升蓝。算法一考虑暴力。我们先枚举\(K,L\),考虑如何求解。直接枚举每一个\(K\)-mer,再枚举里面的每一个长度为\(L\)的子串,找到最大的子串并在起始部分打一个标记。最后直接看有几个地方被打标记就行。时间复杂度:\(O(n^4)\)。预计能过测试点\(1-4\)。算法二我们......
  • [题解]P4052 [JSOI2007] 文本生成器
    P4052[JSOI2007]文本生成器正难则反,我们发现用总字符串个数\(26^m\),减去不可读的字符串个数,就是答案。要使一个字符串不可读,就不能让任何模式串在其中出现。如果某个主串的第\(i\)位与自动机的节点\(j\)相匹配,那么如果状态\(j\)包含模式串(即有一个前缀是一个模式串),那么不管主......
  • 关系代数、函数依赖、Armstrong公理及软考试题解析
    注:本文面向于软考高级—系统架构设计师,具体来说是数据库部分,知识点偏零碎化。想要系统学习数据库原理的,可考虑去看《数据库原理》,清华大学出版社或其他出版社皆可。概述概念关系,就是二维表。特性:列不可分性:关系中每一列都是不可再分的属性,即不能出现如下复合属性行列无序性:......