模拟测试94

T1:数组

  高精度复杂度不容许,可是咱们只关注相对大小,因此能够对答案取对数。spa

  $lg(X^Y)=YlgX$
  $lg(Y!)=\sum \limits_{i=1}^Y lgi$
it

  直接比较便可。变量

  时间复杂度$O(n)$。im

T2:时间

  考虑对序列进行差分。

  差分后区间加减转化为对相距$k$的两个数同时加上两个相反数。

  在对$k$取模意义下开桶,用变量维护不为0的桶的个数。

  修改只需修改两个点,暴力修改便可。

  注意差分共有$n+1$个。

  时间复杂度$O(n)$。

T3:

  考虑区间比较困难,尝试换着考虑每一个点是多少区间的lca。

  发现若是当前节点是一个区间的lca,那么这个区间内的全部点都应在子树内。

  然而反过来并非对的,由于当前点不必定是lca,lca多是子树内的某点。

  其实这是一个自下而上的前缀和的形式,差分下就能获得答案。

  考虑如何维护区间个数。

  对于原序列求出一个互逆数组,而后将当前节点字数内的全部点插入序列中的对应位置,而后求出连续区间个数。

  直接维护复杂度超限,能够用线段树合并维护。

  线段树维护当前区间左侧和右侧分别可以到达的最远位置,和中间部分的区间数。

  合并区间时分类讨论便可。

  时间复杂度$O(nlogn)$。

相关文章
相关标签/搜索