本地打表在线AC什么的最喜欢了。

题意

\(\rm Alice\)和\(\rm Bob\)在玩游戏,他们要给一个\(n\times n\)的矩阵打标记。初始时没有任何标记,每一轮\(\rm Bob\)先手,两个人可以选一个格子打上自己的标记(\(\rm Alice \to A,Bob\to B\)),但如果选择了已经打过标记的格子就输掉游戏。

如果在某个时刻,存在一个长度为\(n\)的排列\(p\)使得对于\(i=1,2,\dots,n\),有第\(i\)行第\(p_i\)列的标记为\(\rm A\)成立,那么\(\rm Alice\)获胜。

如果在\(\lfloor\frac{n^2}{2}\rfloor\)轮后,\(\rm Alice\)依然没有获胜,那么\(\rm Bob\)获胜。

给定\(T\)组询问,每次给定一个数\(n\),问在之前的游戏规则下:

\(1\)、双方记得之前的所有操作,\(\rm Alice\)是否有必胜策略。

\(2\)、\(\rm Alice\)只记得当前这一轮\(\rm Bob\)的操作,\(\rm Bob\)记得所有操作,\(\rm Alice\)是否有必胜策略。

\(T\leq 100,n\leq 10^{18}\)。

题解

这种题目就应该大力猜结论。

先考虑比较简单的第一问,在\(n\)比较大的平凡情况下,假设\(\rm Bob\)标记了第\(x\)行的某个格子,那么\(\rm Alice\)就可以选择第\(x\)行的另一个格子(记为第\(y\)列)。之后,\(\rm Alice\)选择第\(y\)列上的格子一定是不优的,因此对\(\rm Alice\)来说,她可以将棋盘重新看作\((n-1)\times (n-1)\)大小的。只要在\((n-1)\times (n-1)\)时有必胜策略,那么\(n\times n\)时就一定有必胜策略。

那么暴搜最小的有必胜策略的\(n\),可以本地发现\(n=4\)时有必胜策略,因此第一问的答案就是\([n\geq 4]\)。

对于第二问,显然必胜策略应该避免选择已经标记过的格子。可以发现唯一的方法就是使棋盘上的格子两两匹配,对于每一个匹配,假如\(\rm Bob\)选择了其中一个,那么\(\rm Alice\)就立即选择另一个。

首先\(n\)为奇数的时候显然无解,考虑怎么在\(n\)为偶数的时候构造一种匹配方案,使得对于每一个匹配无论选择哪一个,总存在一个排列满足对应的位置都标记了\(\rm A\)。

先本地暴搜\(n\)小的情况(当然要加一点剪枝),可以发现\(n=4\)和\(n=6\)都是有解的。

那么对于更大的\(n\),只要在对角线上依次放上\(n=4\)或\(n=6\)的,剩下的位置随便匹配即可。

比如下面就是\(n=10\)的构造方法,蓝色部分随意匹配即可。

于是第二问的答案就是\([n\geq 4,n\equiv 0(\bmod 2)]\)。

#include<cstdio>
#define int long long
signed main()
{
int T,n;
scanf("%lld",&T);
while(T--)
{
scanf("%lld",&n);
puts(n>=4?"Yes":"No");
puts(n>=4&&!(n&1)?"Yes":"No");
}
return 0;
}

LOJ#551 Matrix的更多相关文章

  1. soj#551 loj#2833 帐篷

    传送门 分析 dp[i][j]表示考虑了i行j列的方案数 我们每次考虑三种情况: 一个点自己放 两个点在同一行 两个点在同一列 代码 #include<bits/stdc++.h> usi ...

  2. Loj 3058. 「HNOI2019」白兔之舞

    Loj 3058. 「HNOI2019」白兔之舞 题目描述 有一张顶点数为 \((L+1)\times n\) 的有向图.这张图的每个顶点由一个二元组 \((u,v)\) 表示 \((0\le u\l ...

  3. Loj #6069. 「2017 山东一轮集训 Day4」塔

    Loj #6069. 「2017 山东一轮集训 Day4」塔 题目描述 现在有一条 $ [1, l] $ 的数轴,要在上面造 $ n $ 座塔,每座塔的坐标要两两不同,且为整点. 塔有编号,且每座塔都 ...

  4. Loj#6183. 看无可看

    Loj#6183. 看无可看 题目描述 首先用特征根求出通项公式\(A_n=p\cdot 3^n+q\cdot(-1)^n\).通过给定的\(f_0,f_1\)可以解出\(p,q\). 然后我们要求的 ...

  5. Codeforces 551 D. GukiZ and Binary Operations

    \(>Codeforces \space 551 D. GukiZ and Binary Operations<\) 题目大意 :给出 \(n, \ k\) 求有多少个长度为 \(n\) ...

  6. loj#2269. 「SDOI2017」切树游戏

    还是loj的机子快啊... 普通的DP不难想到,设F[i][zt]为带上根玩出zt的方案数,G[i][zt]为子树中的方案数,后面是可以用FWT优化的 主要是复习了下动态DP #include< ...

  7. Loj #3044. 「ZJOI2019」Minimax 搜索

    Loj #3044. 「ZJOI2019」Minimax 搜索 题目描述 九条可怜是一个喜欢玩游戏的女孩子.为了增强自己的游戏水平,她想要用理论的武器武装自己.这道题和著名的 Minimax 搜索有关 ...

  8. 【LOJ】#3098. 「SNOI2019」纸牌

    LOJ#3098. 「SNOI2019」纸牌 显然选三个以上的连续牌可以把他们拆分成三个三张相等的 于是可以压\((j,k)\)为有\(j\)个连续两个的,有\(k\)个连续一个的 如果当前有\(i\ ...

  9. 【LOJ】#3090. 「BJOI2019」勘破神机

    LOJ#3090. 「BJOI2019」勘破神机 为了这题我去学习了一下BM算法.. 很容易发现这2的地方是\(F_{1} = 1,F_{2} = 2\)的斐波那契数列 3的地方是\(G_{1} = ...

随机推荐

  1. ZOJ 4016 Mergeable Stack(利用list模拟多个栈的合并,STL的应用,splice函数!!!)

    Mergeable Stack Time Limit: 2 Seconds      Memory Limit: 65536 KB Given initially empty stacks, ther ...

  2. 关于docker构建镜像

    今天正好看到这一块了,记录一下,希望可以帮助到大家. 构建Dockerfile 先来看一个示例: --------------------------------------------------- ...

  3. QTableWidget 详细使用

    QTableWidget 详细使用

  4. [51Nod1238]最小公倍数之和 V3[杜教筛]

    题意 给定 \(n\) ,求 \(\sum_{i=1}^n \sum_{j=1}^n lcm(i,j)\). \(n\leq 10^{10}\) 分析 推式子 \[\begin{aligned} an ...

  5. Spring MVC统一异常处理

    实际上Spring MVC处理异常有3种方式: (1)一种是在Controller类内部使用@ExceptionHandler使用注解实现异常处理: 可以在Controller内部实现更个性化点异常处 ...

  6. .NetCore利用BlockingCollection实现简易消息队列

    前言 消息队列现今的应用场景越来越大,常用的有RabbmitMQ和KafKa. 我们用BlockingCollection来实现简单的消息队列. 实现消息队列 用Vs2017创建一个控制台应用程序.创 ...

  7. CSS快速入门-基本选择器

    1.标签选择器 通过标签进行元素选择. <style> a { font-size:10px; color:red; } </style> 2.* *代表通配符,匹配任意标签, ...

  8. 自制一个H5图片拖拽、裁剪插件(原生JS)

    前言 如今的H5运营活动中,有很多都是让用户拍照或者上传图片,然后对照片加滤镜.加贴纸.评颜值之类的.尤其是一些拍照软件公司的运营活动几乎全部都是这样的. 博主也做过不少,为了省事就封装了一个简单的图 ...

  9. CSS 背景实例

    CSS 背景属性属性 描述background 简写属性,作用是将背景属性设置在一个声明中.background-attachment 背景图像是否固定或者随着页面的其余部分滚动.background ...

  10. 高精度减法--C++

    高精度减法--C++ 仿照竖式减法,先对其,再对应位相减. 算法处理时,先比较大小,用大的减小的,对应位再比较大小,用于作为借位符. #include <iostream> #includ ...