AT_xmascontest2015_c Colored Tiles
题目描述
[problemUrl]: https://atcoder.jp/contests/xmascontest2015noon/tasks/xmascontest2015_c
兔子用几种颜色将 $H$ 行 $W$ 列的格子涂色。我们将第 $i\ (1 \leq i \leq H)$ 行第 $j\ (1 \leq j \leq W)$ 列的格子称为格子 $(i, j)$。
鳗鱼对这个格子中包含多少个点对称的矩形感到好奇。
然而,兔子并不让鳗鱼看这个格子。
鳗鱼只能通过如下方式提问,来调查点对称矩形的数量:
- “格子 $(a, b)$ 和格子 $(c, d)$ 颜色相同,且格子 $(a, d)$ 和格子 $(c, b)$ 颜色相同,这个说法正确吗?”
不过,兔子的耐心有限,只会回答最多 $4,500$ 次提问。
输入格式
首先,输入两个用空格分隔的整数 $H\ (1 \leq H \leq 5),\ W\ (1 \leq W \leq 100)$,表示格子的行数和列数。
> $H$ $W$
接下来,你的程序可以进行 $0$ 次到 $4,500$ 次的提问。
每次提问时,先输出一个字符 `?`,以及 $4$ 个整数 $a\ (1 \leq a \leq H),\ b\ (1 \leq b \leq W),\ c\ (a \leq c \leq H),\ d\ (b \leq d \leq W)$,用空格分隔。表示你在询问:“格子 $(a, b)$ 和格子 $(c, d)$ 颜色相同,且格子 $(a, d)$ 和格子 $(c, b)$ 颜色相同,这个说法正确吗?”
> ? $a$ $b$ $c$ $d$
然后,你的程序会收到 `yes` 或 `no` 的字符串作为回答。
最后,你的程序必须输出字符 `!` 和答案,用空格分隔。
> ! $answer$
输出答案后,**你的程序必须立即结束。** 如果没有立即结束,评测结果不确定。
如果输出不正确,结果也不确定(不一定是 `WA`)。
如果超过了提问次数限制,也会被判为 `WA`,请注意。
如果你的程序输出了正确答案并结束,将被判为正确。
**注意,输出后必须进行 flush。如果没有 flush,可能会被判为 TLE。**
各语言的输入输出方法可以参考 AtCoder 以往的题目(链接:[ABC 019 D: 高桥君与树的直径](http://abc019.contest.atcoder.jp/tasks/abc019_4))。
# 输入格式
输出格式
无
说明/提示
## 输入输出样例
以下是当兔子涂色的格子如下图时的输入输出样例。
兔子涂色的格子示例
| 说明 | 程序输出 | 程序输入 |
|:----:|:--------:|:--------:|
| 行数和列数输入 | 2 3 | |
| 询问“格子 $(1,1)$ 和格子 $(2,3)$ 颜色相同,且格子 $(1,3)$ 和格子 $(2,1)$ 颜色相同,这个说法正确吗?” | ? 1 1 2 3 | |
| 回答 | yes | |
| 询问“格子 $(1,1)$ 和格子 $(1,1)$ 颜色相同,且格子 $(1,1)$ 和格子 $(1,1)$ 颜色相同,这个说法正确吗?” | ? 1 1 1 1 | |
| 回答 | yes | |
| 询问“格子 $(1,1)$ 和格子 $(1,3)$ 颜色相同,且格子 $(1,3)$ 和格子 $(1,1)$ 颜色相同,这个说法正确吗?” | ? 1 1 1 3 | |
| 回答 | no | |
| 输出“格子中包含 $10$ 个点对称的矩形” | ! 10 | |
格子中包含的 $10$ 个点对称的矩形如下图所示:
格子中包含的点对称矩形
由 ChatGPT 4.1 翻译