zoukankan      html  css  js  c++  java
  • 线段树题目解析

      ① 01 数列区间异或,区间求和

        区间异或其实也不会难,只需要碰到完整的区间时将整个区间的和改成区间长度 - 原区间和,其它类似于上面的题目。

      ② 线段树 + 数学内容

        题意大致如下:

          给定一个长度为 $n$ 的数列 $A_1,A_2,...,A_n$,有 $m$ 种操作,每次操作给出操作区间端点 $l,r$:

            1. 随机打乱下标在 $[l,r]$ 之间的所有数的值;

            2. 求 $sum_{i=l}^r A_i$ 的期望值对 $10^9+7$ 取模。

        解析:

          观察 “打乱” 操作,因为是随机的,所以最后取出的每个数的期望值都是相同的。

          但这串数的和是固定的,所以随机打乱后,每个数的期望值就是原区间的平均数。

          这题求和时有模数,所以处理平均数时可以用逆元。

          然后这题就变成了区间修改、区间求和的模板题。

      ③ 区间开平方(下取整),区间求和(数值在 int 范围内,序列长度、操作次数不超过 $10^5$)

        观察发现,一个 int 的数只需要开方超过 $5$ 次,就一定会变成 $1$。

        所以只需要在线段树中加一个记录区间最大值的标记,如果最大值等于 $1$,就直接返回。

        复杂度 $O(5n ;log ;n)$,可以通过。

  • 相关阅读:
    POJ2299--树状数组求逆序数
    每周总结
    2016湖南省赛--A题--2016
    ACM暑期训练总结
    jQuery实现拖动布局并将排序结果保存到数据库
    TP3.2整合kindeditor
    TP3.2整合uplodify文件上传
    Sublime Text3 使用
    ThinkPHP AJAX分页及JS缓存的应用
    Thinkphp分页类使用
  • 原文地址:https://www.cnblogs.com/zengpeichen/p/12331917.html
Copyright © 2011-2022 走看看