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$的。

  • 相关阅读:
    hdu 4864(2) 线段树
    hdu 4864
    Codeforces Round #256 (Div. 2)
    BestCoder Round #1 1001 && 1002 hdu 4857 4858
    [Groovy]Parse properties file in Groovy
    [Shell]Shell学习笔记之for
    [转]Groovy Goodness
    SoapUI Properties的使用
    [转]Groovy One Liners to Impress Your Friends
    How can I use wget in Windows
  • 原文地址:https://www.cnblogs.com/Blue233333/p/8926097.html
Copyright © 2011-2022 走看看