[PKUSC2018]星际穿越 乱做

发布时间 2023-04-20 17:31:50作者: PYD1

感觉完全没有思维能力了啊 QAQ,断断续续想了好久,记录一下心路历程吧。这个思路好像不是很好的样子,建议找题解的同学移步题解区。

一开始读错题了,胡了个离线询问 + 线段树操作的假做法。

后来打算开始写之前明确细节的时候发现寄了,重新读题之后,第一想法肯定是找一下这个图有什么性质。

首先我们肯定好奇 \(u\rightarrow v\) 的最短路长成什么样子。肯定先猜只会向左对吧,然后随便构一下就发现这是不对的,有的时候我们先向右到一个大中转点再向左走会更好。

然后就猜每条最短路里这个中转点只会有一个,也就是说,\(u\rightarrow w\rightarrow v(w>u>v)\)

我们不妨记 \(w\)\(u\rightarrow v\) 路上的最右点。我们现在想证明一定是先一路右走,再一路左走。这个确实是可以证的,但是我不想码那么多字。

我们现在明确了这个最短路上点的范围,接下来还想知道这个最短路具体是怎么走的。

我们考虑一个 \(u\rightarrow v\) 并且只能向左走,容易发现不超过 \(x\) 步就能到达的点形成一个区间。这个和国旗计划很像,我们考虑把倍增作为解法备选项。现在,只要我们确定最右点 \(w\),我们就有了一个解法了。

那么,这个最右点 \(w\) 随着 \(u\) 或者 \(v\) 变化是怎么变化的呢?我首先猜了一手单调性,证了一下发现可能是对的。但是目前手头的性质仍然不够我们给出一个很好的算法。

我猜测这个 \(w\) 不会很多。

这个时候 云浅知处 又过来嘲讽了我还恶意给我透露做法 ?。我没太听清。

就当刚刚什么都没发生,我们猜一手对于同一个 \(u\) 除了 \(u\) 本身以外,这个 \(w\) 就一个。

这个也是可以证的,我们设出 \(u,v,w\),再让 \(v\) 左移一步得到 \(v'\),根据单调性有 \(w\) 不减,我们再证它不增就可以了。还是不想写。

然后我们就知道这个 \(w\) 只有一个,考虑把在 \(u\) 上的询问直接丢到 \(w\) 上再加一个修正量就转化成了只会往左走的一个题。

我们刚刚说过这个东西是可以倍增做的。我又想了好久细节,然后写了一波,小调一会就过了。

上面所有说的懒得写的证明过程大都是类似的,就是反证得到一条更短的最短路得出矛盾。留作思考题。

个人觉得在被恶意透露做法之前大部分性质还是差不多发现了的,思路还是很连贯的,但问题出在 读错题、思考速度很慢、很多性质不能一眼猜出来(最后得到的性质好像有人一眼看出来)、写得很慢。

破防了,摆烂吧。