可持久化线段树学习笔记

可持久化线段树,即主席树。

每次修改的时候不修改原来的节点,暴力建新节点,充分运用了函数式编程的思想。

模板题:给定一个数列,\(m\) 次询问求区间 \([l,r]\) 内的第 \(k\) 大。

利用前缀和思想:

#include <bits/stdc++.h>using namespace std;const int MAXN = 2e5 + 5;struct node {int val;node *lchild, *rchild;
} *rt[MAXN];
int a[MAXN], subA[MAXN], n, m, cnt = 0;node *newNode(int val, node *lc, node *rc) {node *ptr = new node;ptr->lchild = lc; ptr->rchild = rc; ptr->val = val;return ptr;
}void build(node *&cur, int l, int r) {if(l < r) {cur = newNode(0, NULL, NULL);int mid = (l + r) >> 1;build(cur->lchild, l, mid);build(cur->rchild, mid + 1, r);} else cur = newNode(0, NULL, NULL);
}void modify(node *&cur, node *fa, int l, int r, int x) {cur = newNode(fa->val + 1, fa->lchild, fa->rchild);if(l != r) {int mid = (l + r) >> 1;if(x <= mid) modify(cur->lchild, cur->lchild, l, mid, x);else modify(cur->rchild, cur->rchild, mid + 1, r, x);}
}int query(node *u, node *v, int l, int r, int k) {if(l == r) return l;int mid = (l + r) >> 1, lessSize = v->lchild->val - u->lchild->val;if(lessSize >= k)return query(u->lchild, v->lchild, l, mid, k);else return query(u->rchild, v->rchild, mid + 1, r, k - lessSize);
}int main() {scanf("%d%d", &n, &m);for(int i = 0; i < n; i++) {scanf("%d", a + i);subA[i] = a[i];}sort(subA, subA + n);int size = unique(subA, subA + n) - subA;for(int i = 0; i < n; i++)a[i] = lower_bound(subA, subA + size, a[i]) - subA + 1;build(rt[cnt++], 1, n);for(int i = 0; i < n; i++) {modify(rt[cnt], rt[cnt - 1], 1, n, a[i]);cnt++;}while(m--) {int x, y, k;scanf("%d%d%d", &x, &y, &k);printf("%d\n", subA[query(rt[x - 1], rt[y], 1, n, k) - 1]);}return 0;
}

转载于:https://www.cnblogs.com/zhylj/p/9903992.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/426510.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wordpress functions.php 在哪,在functions.php中定义变量并在WordPress中的函数钩子中访问它们...

我想更详细地了解Wordpress结构.正如我所知,使用全局关键字并不是一个好主意.这是我想要完成的&#xff1a;Inside functions.php$affID 12334; //defining a variableadd_shortcode(affiliate_link, function() {$newLink https://example.com?id . $affID;return $newLink…

java学习(56):接口之间的继承续

//定义一个接口&#xff0c;里面放置多个方法 public interface CountManagement { double count(double n,double m,char tag); double count(double up,double down,double h); double eqAax(double num1,double num2); } //定义一个接口&#xff0c;里面需要实现多个方法 pu…

[UE4]单机游戏改网络游戏,不完全清单

把Actor的复制打开中腰数据的复制打开&#xff0c;且只在服务器修改&#xff08;比如角色属性血量&#xff09;需要同步的Actor&#xff0c;不在客户端Spawn客户端的操作&#xff0c;先报告到服务器&#xff0c;服务器再广播到所有客户端某些逻辑只在服务器运行&#xff08;比如…

java学习(57):内部类

/** 2 * 1.内部类可以直接访问外部类的成员&#xff0c;包括私有 3 * 2.外部类要访问内部类的成员必须创建对象 4 * author jjz 5 * 6 */ public class outer { //外部定义的方法 public void play(){ System.out.println(“我喜欢打篮球”); } public static void main(String…

php对接ai图片处理,php – 使用imagick将.psd和.ai转换为PNG / JPG

我解决了它,并将与世界分享&#xff01;它会将.ai,.psd,.jpg,.png,.gif转换为缩略图.这是一个需要4个参数的函数&#xff1a;$dir – 要保存的目录.$tmpName – 命名不包括扩展名的文件的名称.$fileType – 自解释.$size – 大或小.function thumbGenerator($dir,$tmpName,$fil…

python初识

1.python的简介   python是一门解释型&#xff0c;弱类型 高级开发编程语言. 2.python安装 (1)python3.x  https://www.python.org/downloads/ (2)pycharm  https://www.jetbrains.com/pycharm/ 3、编写第一个python程序 符号&#xff1a;英文 编码方式&#xff1a;“utf-8…

java学习(58):私有内部类后访问

私有化外部方法访问 public class outer { //外部定义的方法 private class student { public void play() { System.out.println(“只有学生才会喜欢打篮球”); } } public void teacher() { student stu new student(); stu.play(); } public static void main(String[] arg…

java学习(59):static修饰内部类

class Outer { private int num 10; private static int num2 100; //内部类用静态修饰是因为内部类可以看出是外部类的成员public static class Inner {public void show() {//System.out.println(num);System.out.println(num2);}public static void show2() {//System.out…

Python_自定义关键字的使用

1.在Python中新建一个套件MOSAPP&#xff08;一般为APP名称&#xff09;&#xff1a;New Suite→Directory 2.在套件下新建个资源文件My&#xff1a;New Resource:My 3.在My资源文件库下新建个关键字Mytest&#xff1a;New User KeyWord&#xff1a;Mytest 4.在01smoke下新建一…

php http请求xml数据,使用php从HTTP POST请求中检索XML

我检查了类似的问题但没有解决我面临的问题.我正在构建一个Web服务,我想从HTTP POST请求中检索XML数据,操纵数据并返回响应.编写脚本时应考虑以下信息&#xff1a;The communication mode is HTTP POST (not SOAP)The content type is text/xml.The POST request will contain …

java学习(60):java最终类(了解)

最终类 使用关键字 final 对类进行修饰. [访问控制符] final class 类名 { 类体} 例如: public final class MyClass{ ... } 说明: final 不能当做父类, 不能被继承,不能有子类 , 只能被实例化对象 . 如果认为封装类中的某些数据(成员变量) 或者 某些方法(成员方法) 不能…

Lesson 028 —— python 模块

Lesson 028 —— python 模块 在前面的几个章节中我们脚本上是用 python 解释器来编程&#xff0c;如果你从 Python 解释器退出再进入&#xff0c;那么你定义的所有的方法和变量就都消失了。 为此 Python 提供了一个办法&#xff0c;把这些定义存放在文件中&#xff0c;为一些脚…

java 复杂报表,Java报表比较之中国式报表(复杂报表)篇

Java报表工具&#xff0c;首先可以分成两大类&#xff1a;纯Java报表工具&#xff0c;和支持Java的报表工具。支持Java的报表工具我们所说的”支持”Java的报表工具&#xff0e;其实就是非Java的报表工具&#xff0c;但是可以在Java程序中调用.这样的产品很多&#xff0c;总的讲…

java学习(61):适配器

定义一个动物的抽象类 public abstract class Animal { //定义一个抽象类的方法 public abstract void run(); //定义一个抽象类的构造器 public Animal(){ System.out.println(“抽象类的构造器”); } } 定义一个哺乳动物的抽象类 package com.zx; abstract class Mammal ext…

9个图片滑块动画

链接&#xff1a;https://www.html5tricks.com/9-jquery-image-slider.html 实例&#xff1a; 该实例下载链接&#xff1a;https://www.html5tricks.com/jquery-drag-image-slider.html 转载于:https://www.cnblogs.com/wanlibingfeng/p/9915376.html

php 02d,邻苯二甲酸二苯酯(DPhP)

邻苯二甲酸二苯酯(DPhP) CAS:84-62-8 规格&#xff1a;5G 货号&#xff1a;N-11798-5G邻苯二甲酸二苯酯(DPhP) CAS:84-62-8规格&#xff1a;10G 货号&#xff1a;N-11798-10G邻苯二甲酸二苯酯(DPhP)相关物质订购信息型号 …

java学习(62):java抽象类

定义一个抽象的食物方法 package com.zx; //定义一个食物的抽象方法 public abstract class Food { public abstract void taste(); } 定义食物面条 package com.zx; public class Flour extends Food{ public void taste() { System.out.println(“我可以做面条”); } } 定义食…

java学习(63):普通内部类

定义一个普通内部类 package com.zx; public class NotebookComputer01{ //定义一个非私有化的变量 public int num; public class CPU{ //类型 public String number; //运行速度 public long speed; public String counter(int num){ return Integer.toBinaryString(num); } …

php与其它语言组合开发,PHP相对于其它语言有哪些魅力?

PHP起源于自由软件&#xff0c;自由软件就是开放源代码软件&#xff0c;使用PHP进行web应用程序的开发具有以下优势。1、安全性高PHP是开源软件&#xff0c;每个人都可以看到所有的PHP源代码&#xff0c;程序代码与Apache编译在一起的方式也可以让它具有灵活的安全设定。PHP具有…

2018.11.6

1&#xff0c;了解HTML5 设计目的是为了在移动设备上支持多媒体相对之前的版本有哪些改进 认识语义元素和非语义元素 2&#xff0c;css&#xff1a;层叠式样式表是用来定义如何显示HTML元素的 写法&#xff1a;有 内联 内嵌 外部引用的方式 格式&#xff1a;样式名…