首页 > 其他分享 >ABC282_H

ABC282_H

时间:2023-01-23 18:22:08浏览次数:31  
标签:支配 log 复杂度 本题 mathcal 最大值 ABC282

上次做这题挺有感触,本来想写点东西,奈何写了一半 Typora 卡死,写的东西都丢失了,这次又有了新的感悟,决定一起写出来。

这道题看到前面的 \(\max\) 就可以想到,可以对于每个 \(a_i\) 求出其支配区间,然后 \(a_i\) 会将支配区间分为两段,枚举短的那一段,对长的那一段进行二分即可。

这样看似复杂度会高达 \(\mathcal{O}(n^2\log n)\),实际上却是 \(\mathcal{O}(n\log^2n)\) 的优秀算法,足以通过本题。

以下我们将说明复杂度为 \(\mathcal{O}(n\log^2n)\) 的原因:

观察可以得出,支配区间实际上呈二叉树的结构,具体地说,最大值的支配区间是整个数列,然后数列被最大值分为两段,左段的最大值支配了整个左段,右段的最大值支配整个右段,那么从整段的最大值点向左右两段的最大值点连边,于是可以递归处理左右两段,建出一棵二叉树(这棵二叉树实际上是一棵笛卡尔树)。

可以观察到一个性质,某个节点对应的子树大小,和它的支配区间长度相等。

那么对于每个结点,枚举其左右儿子的支配区间中 长度较短的那一段,这个复杂度就相当于是 dsu on tree 的复杂度,是 \(\mathcal{O}(n\log n)\) 的。

那么在本题中算法的复杂度便是 \(\mathcal{O}(n\log^2 n)\)。

在本题中,实现上不必建出笛卡尔树,直接单调栈求出支配区间后枚举 \(a_i\) 二分即可。

做完本题还可以去看看 CF1777F。

标签:支配,log,复杂度,本题,mathcal,最大值,ABC282
From: https://www.cnblogs.com/0922-Blog/p/abc282_h.html

相关文章

  • abc282 E - Choose Two and Eat One
    题意:\(n\)个球,第\(i\)个球上有数\(a_i\),每次操作选两个球,得到\((a_i^{a_j}+a_j^{a_i})\%M\)的收益,丢弃两球之一。重复操作直到只剩一个球,问最大收益\(n\le500......
  • [ABC282F] Union of Two Sets
    ProblemStatementThisisaninteractivetask,whereyourandthejudge'sprogramsinteractviaStandardInputandOutput.Youandthejudgewillfollowthepro......
  • [ABC282E] Choose Two and Eat One
    ProblemStatementAboxcontains$N$balls,eachwithanintegerbetween$1$and$M-1$writtenonit.For$i=1,2,\ldots,N$,theintegerwrittenonthe$i$......
  • [ABC282D] Make Bipartite 2 题解
    题目描述给定一个无向简单图\(G\),统计有多少个点对\((u,v)\)满足:\(u,v\)之间没有边直接连接:\((u,v)\notin\textE\)连接\((u,v)\)后\(G\)是二分图......