zoukankan      html  css  js  c++  java
  • 一道题16

    $n leq 100000$的序列支持$q leq 100000$个操作:区间加;区间除下取整;求区间和;求区间Min。数字$-1e9 leq a_i leq 1e9$,区间加$-1e4 leq c leq 1e4$,除数$2 leq d leq 1e9$。

    线段树。为了不除可以这样:设区间最大值$y$最小值$x$,当$x-left lfloor frac{x}{d} ight floor=y-left lfloor frac{y}{d} ight floor$时打上区间加标记即可,否则暴力递归。

    可以发现一个数除log次就可以打标记了,如果没加这样子就每个点只会额外访问到$log_2Max$次,就可以过了

    如果还有区间加,一次加只让$log_2n$个区间再额外访问$log_2c$次,因此俩log也是没问题的。

    与此类似的复杂度分析题:

    $n leq 100000$的序列支持$q leq 100000$个操作:区间或;区间与;区间求Max。数字$0 leq a_i < 2^{20}$。

    每次区间或,会把一些位强制变1,如果这区间的这一位相同就打个标记修改,否则暴力递归。区间与同理。

    复杂度?$f(x)=f(l)+f(r)+g(x)$,$g(x)$表示这区间不同的数的个数。每次修改最多$f(root)$会增加$20log_2n$,每访问一个额外区间$f(root)$会-1,因此复杂度是$20nlog_2n$的。

  • 相关阅读:
    一本通1559跳跳棋
    一本通1558聚会
    一本通1555【例 4】次小生成树
    P1880 [NOI1995]石子合并
    P2066 机器分配
    P2073 送花
    P1886 滑动窗口
    P1637 三元上升子序列
    P1533 可怜的狗狗
    P1631 序列合并
  • 原文地址:https://www.cnblogs.com/Blue233333/p/8926097.html
Copyright © 2011-2022 走看看