CF1696
G、H 就不改了。
C(构造)
操作是可逆的所以全部展开就可以了。
D(笛卡尔树、单调栈、最短路、DP)
可以证明 \(1\sim n\) 的最短路满足编号递增,也就是说最短路和对应有向图最短路等价。只需要证明不存在 \(a,b,c,d\) 满足 \(a\to c\to b\to d\) 这样的子结构就可以了。分类讨论一下。有了这个我们就可以直接单调栈+线段树 DP 了。时间 \(O(n\log n)\)。
正解比较神奇,考虑 \(1\sim n\) 的最大值 \(a_k\),容易发现 \(1\sim n\) 的路径一定经过 \(k\),那么分治处理 \(dis(1,k)\) 和 \(dis(k,n)\) 就可以线性了。这种和区间最值有关的问题考虑最值位置是常用的套路。
不过说句闲话,其实 \(1\) 到任意点也是可以做的(
F(构造)
构造组合对象的题。
开始想强行求出和 \(x\) 相邻的点,后面发现非常麻烦就放弃了。
原题给出的条件实际上是一个等价关系。发现如果我们知道其中一个和 \(x\) 相邻的点,那么我们可以知道所有和 \(x\) 相邻的点,进而知道整张图。那么我们枚举和 \(1\) 相邻的点 \((1,x)\),然后 \(O(n^3)\) check 整张图就可以了。
不过我感觉这题的正常逻辑是先暴力然后剪枝(
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号