JZOJ 2020.07.27【NOIP提高组】模拟

总结

今天的题还好,不幸拿了 \(rank1\),只有 \(380pts\)
实际 \(AK\) 也不难
前三题都是思维题
后面一题其实不过是简单的数据结构优化 \(dp\) 的题
\(GSM\) 的话讲就是白开水,\(O(n\log n)\) 的时间复杂度
然而我 \(O(n^2)\) 能过,大雾

\(T1\)

规律题,发现只有形如 \(010101···\)\(101010···\) 是不稳定的
设其长为 \(s\),那么把他变稳定的次数是 \(\lfloor \frac{s+1}{2} \rfloor\)
答案取最大的 \(\lfloor \frac{s+1}{2} \rfloor\) 就行了
考虑稳定的序列是什么样子。其实自己手推一下就行了······

\(T2\)

思维题,枚举 \(i,j\),列个方程判断它们能否相遇就好了

\(T3\)

如何配对?排序从小到大依次配对就行了
然后二分答案,答案相当于它最远能相交到的线段,\(check\) 一下是否能相交就行了

\(T4\)

因为是单向道路,路径唯一,所以考虑 \(dp\)
\(f_i\) 表示 \(i\) 到首都的最短话费
\(f_i = \min_{j \in ancestor,dep_i-dep_j<=k} f_j+w\)
\(k,w\) 如题所述

于是我凭这么裸的 \(dp\) 过了
实际上正解应该是 \(n\log n\)
因为它是向上选 \(dp\) 值最小的
所以我们可以多加一维 \(q\) 表示 \(i\) 向上跳 \(2^q\) 的最小的 \(dp\)
\(log\) 次更新当前 \(f\) 就行了
当然可以用线段树维护
\(dfs\) 遍历时维护不同深度的最小 \(f\) 值,每次取可用的区间的最小 \(f\) 值就行了
它也是 \(o(n\log n)\)

猜你喜欢

转载自www.cnblogs.com/leiyuanze/p/13385318.html