地址:https://zhuanlan.zhihu.com/p/459579152

我这里翻译一下官方的文档。

首先需要满足几个性质。

(注意 ∗ 是个操作,不是单纯的一个乘号)

1)操作满足结合律 即 (a∗b)∗c=a∗(b∗c)
2)操作需要有个幺元(基本元/单位元) a∗e=e∗a=a

如果你有这个一个序列 S,长度为 N ,接下来的两个询问的操作的复杂度为 O(logN)

1)更新序列中的一个元素
2)计算区间的 ∗

需要注意的是,如果你的 ∗ 这个操作自带一个复杂度 O(T) ,最后的复杂度的计算要乘上他。

构造一个线段树(俗称build)

1)segtree<S, op, e> seg(int n)
2)segtree<S, op, e> seg(vector<S> v)

这里我们需要一个操作 op 和一个 幺元 e 。

1)的方法可以让我们构造一个长度为n的线段树,初始值为幺元e (下标从0开始

2)的方法可以让我们构造一个长度为v.size()的线段树,初始值为vector (下标从0开始

op函数的形式应该为 (这里S表示这个元素的类型

S op(S a, S b)

e的函数形式应该为

S e()

举个例子。

int op(int a, int b) {
return min(a, b);
}
int e() {
return (int)(1e9);
}
segtree<int, op, e> seg(10);

这样我们定义了一个操作为min,幺元为 1e9 (很明显 min(x,1e9) = x ),的长度为10的线段树,初始值为1e9。

构造(build)的复杂度为O(N)

//这样的一个线段是就是 单点修改 区间查询最小的一个线段树。

接下来介绍操作。

void seg.set(int p, S x)

将 a[p] 赋值为 x

复杂度为 o(logN)

S seg.get(int p)

返回 a[p]

复杂度为 o(1)

S seg.prod(int l, int r)

返回op(a[l], ..., a[r - 1]) 结果(注意是[L,R) 前闭后开)

复杂度o(logN)

S seg.all_prod()

返回op(a[0], ..., a[n - 1]) 。

复杂度为O(1)

这里还有一个树上二分的操作,我就讲一个吧。

  1. (1)int seg.max_right<f>(int l)
  2. (2)int seg.max_right<F>(int l, F f)

这里f的形式应该为

bool f(S x)

返回一个 r 满足

f(op(a[l],a[l+1],...,a[r-1])) = true,f[a[r]] = false;

举个例子。

像使用stl一样使用线段树 ——AtCoder Library(转载https://zhuanlan.zhihu.com/p/459579152)的更多相关文章

  1. 线段树总结 (转载 里面有扫描线类 还有NotOnlySuccess线段树大神的地址)

    转载自:http://blog.csdn.net/shiqi_614/article/details/8228102 之前做了些线段树相关的题目,开学一段时间后,想着把它整理下,完成了大牛NotOnl ...

  2. HDU 1166 - 敌兵布阵 - [单点修改、区间查询zkw线段树]

    题还是那个题:http://www.cnblogs.com/dilthey/p/6827959.html 不过我们今天换一种线段树实现来做这道题: 关于zkw线段树的讲解:https://zhuanl ...

  3. 14-敌兵布阵(HDU1166线段树 & 树状数组)

    http://acm.hdu.edu.cn/showproblem.php?pid=1166 敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  4. hdu1394Minimum Inversion Number(线段树,求最小逆序数)

    Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java ...

  5. bzoj 4695 最假女选手 吉利线段树

    最假女选手 Time Limit: 50 Sec  Memory Limit: 128 MBSubmit: 480  Solved: 118[Submit][Status][Discuss] Desc ...

  6. bzoj 1828: [Usaco2010 Mar]balloc 农场分配【贪心+线段树】

    长得挺唬人的贪心,按照右端点排序,用最小值线段树的询问判断当前牛是否能放进去,能的话更新线段树,ans++ 来自https://www.cnblogs.com/rausen/p/4529245.htm ...

  7. 线段树详解 (原理,实现与应用)(转载自:http://blog.csdn.net/zearot/article/details/48299459)

    原文地址:http://blog.csdn.net/zearot/article/details/48299459(如有侵权,请联系博主,立即删除.) 线段树详解    By 岩之痕 目录: 一:综述 ...

  8. 线段树初步——转载自ljc20020730

    线段树初步   线段树模板1:https://www.luogu.org/problem/show?pid=3372 线段树模板2:https://www.luogu.org/problem/show ...

  9. 牛客wannafly 挑战赛14 B 前缀查询(trie树上dfs序+线段树)

    牛客wannafly 挑战赛14 B 前缀查询(trie树上dfs序+线段树) 链接:https://ac.nowcoder.com/acm/problem/15706 现在需要您来帮忙维护这个名册, ...

  10. 2019牛客多校第一场 I Points Division(动态规划+线段树)

    2019牛客多校第一场 I Points Division(动态规划+线段树) 传送门:https://ac.nowcoder.com/acm/contest/881/I 题意: 给你n个点,每个点有 ...

随机推荐

  1. koreanDollLikeness_v10模型下载及使用

    koreanDollLikeness_v10模型 前几天给大家提供了koreanDollLikeness_v15模型的下载,最近小卷终于找到koreanDollLikeness_v10模型啊.先来说说 ...

  2. 教你轻松用上ChatGPT

    最近ChatGPT大火呀,小伙伴们是不是在网上看到各种和ChatGPT有趣聊天的截图,奈何自己实力不够,被网络拒之门外,只能眼馋别人的东西.看别人玩,肯定不如自己玩一把舒服的啊.今天小卷就给大家汇总了 ...

  3. flash8.ocx或其附件之一不能正确注册

    运行书中自带光盘中的程序,在该程序的readme说明中,提到这类错误,解决方式是: 因为是免安装程序,需要运行"setup"文件夹下的setup.exe文件,安装控件.在安装完成后 ...

  4. TStringList,的IndexOf,find,IndexOfName 例子

    a=wokao b=in c=wori d=ri e=我靠 f=我插 procedure TForm1.Button1Click(Sender: TObject); var MyList: TStri ...

  5. 如何在windows端安装和配置maven

    1.下载maven 从官方下载maven,下载页面:http://maven.apache.org/download.cgi 2.安装maven maven压缩包解压到一个没有中文,空格或其他特殊字符 ...

  6. CF1823D Unique Palindromes

    题目链接 题解 知识点:构造. 首先反证法容易证明一个结论:每次增加一个字符,本质不同的回文子串至多增加一个. 那么无解的条件就是,\(c_i - c_{i-1} > x_i -x_{i-1}\ ...

  7. NC18987 粉嘤花之恋

    题目链接 题目 题目描述 qn是个特别可爱的小哥哥,qy是个特别好的小姐姐,他们两个是一对好朋友 [ cp (划掉~) 又是一年嘤花烂漫时,小qn于是就邀请了qy去嘤花盛开的地方去玩.当qy和qn来到 ...

  8. vue3的宏到底是什么东西?

    前言 从vue3开始vue引入了宏,比如defineProps.defineEmits等.我们每天写vue代码时都会使用到这些宏,但是你有没有思考过vue中的宏到底是什么?为什么这些宏不需要手动从vu ...

  9. SSD寻址单元IU对寿命的影响——古猫先生存储随笔转载

    SSD寻址单元IU对寿命的影响有多大? 原创 古猫先生 存储随笔 2024-01-30 08:30 发表于浙江 [转载]SSD寻址单元IU对寿命的影响有多大? (qq.com) 随着存储技术的不断进步 ...

  10. STC8H8K64U 的 USB 功能测试(续)

    对 STC8H8K64U 的USB测试昨天没搞定, 判断可能是供电的问题, 直接用5V不行, 从USB2TTL上采电3.3V时存在一个问题, 就是 D-/D+ 在上电前就已经连接了, 不符合 USB ...