CF1739A Immobile Knight 题解

读题点 这里

题意简述

给定一个 n×mn\times m 的国际象棋棋盘,求一个格子使得马在上面不能走到其它格子。不存在则输出任意一个格子。

思路分析

假设马现在在 (x,y)(x,y) ,那么下一步它可以跳到 (x±1,y±2)(x \pm 1,y \pm 2)(x±2,y±1)(x \pm 2,y \pm 1)

我们可以得出以下结论:

  1. n,m2n,m \le 2 时,任意格子都满足条件。

  2. n=m=3n=m=3 时,方格中间的数满足条件。

  3. n,m>3n,m>3 时,无解,输出任意一个坐标即可。

故输出方格中间的数一定满足条件

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<bits/stdc++.h>
using namespace std;

int T,n,m;

int main(){
cin>>T;
while(T--){
cin>>n>>m;
cout<<(n+1)/2<<" "<<(m+1)/2<<endl;
}
//system("pause");
return 0;
}