[比赛入口](http://zhengruioi.com/contest/1025)
A. 不知道高到哪里去了
莫名其妙题
B. 身经百战
考虑 dij,直接离散化,排序,相邻连 \(1\) 操作的边,\(2\) 操作的边连上,跑一边最短路即可。
C. 跑得比谁都快
发现一件事:等过一次红灯之后,就从 \(0\) 开始了。于是只用求出第一次停的位置在哪里即可。
D. 人生经验
不会,但其实也是把题看错了很久,把题意弄对就想看题解了。
考虑其生成方式,就是每次从头冒出一段,翻过来就是从头往后,每次消掉一段。由于偶数位用处不大,考虑两个一起加,那么要么我们什么都不做,要么先加一个然后把前面都消掉再加一个。那么一个判定就是设 \(f_{i,a,b}\) 表示前 \(i\) 个加上一个 \(a\) 能不能变成 \(b\)。转移是 trivial 的。
那么我们把状态压进去 dp 套 dp 即可。可以考虑实现一手。
bonus: 考虑如果不要求删完,也就是可以每次选三个删,那么怎么判定/计数呢?