[ABC336D] Pyramid 分析

· · 个人记录

赛后诸葛亮系列。思路还是不够开。

赛时写了一堆模拟,最后发现越来越复杂。事实证明,ABC 从来没有复杂的模拟题,只有你想不到的思维题。

实际上用 DP 很自然就能做出来。f(i) 为到前 i 个元素正着的最高点,g(i) 为反过来。我们要找的是正反的交汇点,也就是 \min \{f(i), g(i)\}

然后我们考虑转移。很明显,对点 i,如果 s_i \ge f(i-1),那么 f(i)\gets f(i-1)+1。否则,山在这里就断了,f(i) \gets s_ig() 同理。

最后取 \min \{f(i), g(i)\} 的最大值。