NC223888 红色和紫色.md
题目链接
题目
题目描述
漫长的生命总是无聊的。这天,小红和紫准备玩一个染色游戏。
她们拿出了一个有 \(n*m\) 个格子的网格,每个格子只能被染成红色或紫色。每个人可以任意选择一个格子染成红色和紫色,两人轮流进行染色。
她们约定,不能有两个相邻的格子有相同的颜色。最后无法进行染色的人判输。
小红先手进行染色。小红想知道,双方都采用最优策略的情况下,她能否取得胜利?
输入描述
两个正整数 \(n\) 和 \(m\) ,用空格隔开。
\((1\leq n, m \leq 10^9)\)
输出描述
如果小红获胜,则输出一个字符串"akai"
如果紫获胜,则输出一个字符串"yukari"
示例1
输入
1 1
输出
akai
说明
小红直接把这个格子染成红色,即可获胜
示例2
输入
1 2
输出
yukari
说明
小红染色后,紫只需要在相邻的格子染上不同的颜色即可获胜
题解
知识点:博弈论。
当且仅当 \(n,m\) 都为奇数时,小红可以占据中心位置,之后和小紫采取位置中心对称且颜色相同的染色即可获胜。否则,小紫采取这个策略会获胜。
时间复杂度 \(O(1)\)
空间复杂度 \(O(1)\)
代码
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n, m;
cin >> n >> m;
if ((n & 1) && (m & 1)) cout << "akai" << '\n';
else cout << "yukari" << '\n';
return 0;
}