题解:P17273 [eJOI 2026] Automata
Register_int · · 题解
场了记录一下。放 NOIP T2 还是有点太高看我了,做了一百万年。
一个观察就是
观察走的过程,我们将这些结构定义为“单向阀”:
特别地,假装序列的边界也存在单向阀。
那么我们考虑要让
- 若
l 和r 到中间的第一段路同为递增或递减,那么必然可以先把两个点卡在最近的单向阀的位置,然后任意挪动,必然有解。 - 若
l 的左侧是\to ,那么l 已经被卡住,可以再把r 卡到中间去,然后移动l ,必然有解。 - 若
r 的右侧是\gets ,同理也有解。 - 否则,此时形如
\gets l\to\cdots\gets r\to 。设l 到左右两侧的距离为ax,ay ,r 到左右两侧的距离为bx,by 。那么我们要想办法让一侧不卡出去的同时把另一个点卡进来,相当于要求ax>bx 或ay<by 成立,否则无解。
以上就是所有情况,实现只需要找上一个或下一个