题解:P8770 [蓝桥杯 2022 省 A] 填空问题
zry_nhzx_2021
·
·
题解
题解:P8770 [蓝桥杯 2022 省 A] 填空问题
第一题
将 1 张纸分割为 20 行 22 列的独立二维码,每次只能裁 1 张纸,求最少裁剪次数。
计算过程
总裁剪次数 = 边缘裁剪次数 + 内部分割次数
代入题目参数 n = 20 , m = 22 :
总次数 = 4 + ( 20 \times 22 - 1 ) = 443
算得答案为 443 。
第二题
1. 每次可放 $1$ 个棋子,或同一行连续 $2$ 个空位放 $2$ 个棋子;
2. 放满棋盘的一方输;
3. 小蓝先手,双方均采取最优策略。
判断 $4$ 种初始局面的胜负。
**解题思路**
参考题解的核心是**后手的最优应对策略**,针对每种初始局面,分析小乔如何通过操作让小蓝陷入必败态。
### 情况一
小乔在第一行第 $3$ 格放棋,使第一行变为 `XOXO` 。后续无论小蓝操作第一行还是第二行,小乔都能通过对应策略让小蓝被迫放满棋盘,结果为 `L`。
### 情况二
小乔直接放满第一行剩余空位。第二行剩 $4$ 个空位,小乔保持 “小蓝放 $1$ 个则放 $2$ 个,放 $2$ 个则放 $1$ 个” 的节奏,让小蓝收尾,结果为 `L`。
### 情况三
小乔在第一行第 $4$ 格放棋,使第一行变为 `OXOX`,情况等价于情况一,复用应对策略,结果为 `L`。
### 情况四
第一行仅剩第 $1$、$4$ 格,无法放连续 $2$ 子。小蓝先手占据优势,引导小乔陷入必败态,结果为 `V`。
最终答案为 `LLLV`。
## 正确代码
```cpp
#include<iostream>
using namespace std;
int main() {
string ans [] = {
"443", // 双引号中替换为 A 题的答案
"LLLV", // 双引号中替换为 B 题的答案
};
char T;
cin >> T;
cout << ans[T - 'A'] << endl;
return 0;
}