入门级的构造题乱做
https://yhx-12243.github.io/OI-transit/?tag=构造
新年的拯救计划
之字形构造!
奥林匹克五子棋
OXXOOXXOOXXOO
XOOXXOOXXOOXX
OXXOOXXOOXXOO
XOOXXOOXXOOXX
OXXOOXXOOXXOO
组合动作
- 首先找出初始的字母是什么:
输入AB
,如果有分:那就输入A
,如果还有分,那就是A
;如果第二次没有分,那就是B
。其它同理。 - 假设首字母是
A
,即后面字母可能是BXY
。如果现在我们已经知道了答案的前缀$
(长度为 \(l\)),那么输入$X$BB$BX$BY
,那么下一个字母是B/X/Y
当且仅当返回值分别为 \(l+2\),\(l+1\),\(l\)。 - 但是你发现输入一次需要 \(4l+7\),如果枚举到最后一个,那么就是 \(4(n-1)+7>4n\) 不行。所以询问两次,分别询问
$B,$X
。哪个有分就是哪个,都没有分就是Y
。
出乎意料地,这样刚好用了 \(n+2\) 次询问(即为题目的满分做法)!