题解:CF1874B Jellyfish and Math

· · 题解

好题,把优化建图和二进制拆位融合得很好。

你希望把 (x,y,m) 记到状态里面跑最短路,但是记不下。二进制要考虑拆位,拆完位你就可以发现很多位的三个参数都是相同的,这样怎么搞都是相同的,很多状态都白记了,根本不合法!

于是考虑每一个最初是 (x,y,m) 位的当前变成了什么样的 (c,d)。特别地,若初始时询问中没有 (x,y,m),记为 4。跑一遍最短路就行了。