zoukankan      html  css  js  c++  java
  • 模拟测试94

    T1:

      高精度复杂度不允许,但是我们只关注相对大小,所以可以对答案取对数。

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

      直接比较即可。

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

    T2:

      考虑对序列进行差分。

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

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

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

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

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

    T3:

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

      发现如果当前节点是一个区间的lca,那么这个区间内的所有点都应在子树内。

      然而反过来并不是对的,因为当前点不一定是lca,lca可能是子树内的某点。

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

      考虑如何维护区间个数。

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

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

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

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

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

  • 相关阅读:
    FTP和SSH的区别
    Hadoop之回收站
    什么是簇?
    linux中环境变量的配置
    windows系统中的系统变量和用户变量,以及配置JDK中各个参数的意义
    linux 中yum和rpm 总结
    ajax请求之async:false/true的作用
    JavaScript eval() 函数的用法
    js模式
    数组的一些操作
  • 原文地址:https://www.cnblogs.com/hz-Rockstar/p/11771305.html
Copyright © 2011-2022 走看看