线段

线段树练习

# Ⅰ.差分与前缀和 ## P2184 贪婪大陆 **题意** :给定防线长度 $n$ 和操作次数 $m$, 每次在 [$l$ ,$r$] 内布下一种雷,查询区间雷的种类数。 **分析** : 用线段的方式表示区间布的雷 : ![](https://cdn.luogu.com.cn/upload/i ......
线段

李超线段树

李超线段树 李超线段树是一种求函数定点最值的线段树,思路高妙,用处也很广。 以模板题为例。 P4097 [HEOI2013] Segment 有 \(n\) 个操作,操作分两种。 在平面上加入一条线段,两端端点为 \((x_0,y_0)\) 和 \((x_1,y_1)\),第 \(i\) 条被插入的 ......
线段

数据结构 - 线段树学习笔记

前言 果果终于讲线段树了 线段树太 TM 好用啦! But,强大的功能是需要码量来实现的。 定义 线段树是一种储存了一个序列的区间信息,并在各个区间中建立了关联的数据结构。 对于任意一个序列都可以建出它的线段树。 它是一颗完全二叉树,它的每一个节点都是一个区间。 对于每一个节点,其左儿子节点为这段区 ......
线段 数据结构 结构 笔记 数据

浅谈几类线段树、树状数组优化 DP

本文主要介绍几类线段树和树状数组优化动态规划的方法。 本文的理论部分比较简单,所以主要以题目讲解为主。 这是本蒟蒻的第一篇日报,如有问题,请指出,感谢。 Part 0. 前置知识 动态规划 线段树 Part 1. 属性在一个区间的进行转移 这是讨论的是形如 \(f_i=Y(i)+\max\limit ......
线段 数组 DP

线段树

线段树 引入 线段树是算法竞赛中常用的用来维护 区间信息 的数据结构。 线段树可以在 \(O(\log N)\) 的时间复杂度内实现单点修改、区间修改、区间查询(区间求和,求区间最大值,求区间最小值)等操作。 线段树 线段树的基本结构与建树 过程 线段树将每个长度不为 \(1\) 的区间划分成左右两 ......
线段

P3372 【模板】线段树 1

原题链接 题后感 码量也太大了吧 小记 题解网上有,但是有关这个lazytag我要提一嘴,我建议不要记它,你只需知道修改的区间没有整体破坏时,其内部的元素内容暂不做修改 code 码量真大 #include<bits/stdc++.h> #define ll long long using name ......
线段 模板 P3372 3372

P10009 [集训队互测 2022] 线段树 题解

题目链接:P10009 [集训队互测 2022] 线段树 神仙分块题,先给一下出题人的神仙官解:官解 前面还看得懂。后面是啥?这不是 ds 题咋和 dp、轮廓线扯上关系了。看了半天,还是这个启发了我: 其手玩下,在 Excel 里写一下,可以理解到这里其实是想表达的一个核心意思是啥:对于一组序列而言 ......
集训队 线段 题解 P10009 10009

Rust实现线段树和懒标记

参考各家代码,用Rust实现了线段树和懒标记。 由于使用了泛型,很多操作都要用闭包自定义实现。 看代码。 // 线段树定义 pub struct SegmentTree<T: Clone> { pub data: Vec<T>, tree: Vec<Option<T>>, marker: Vec<T ......
线段 标记 Rust

线段树笔记

例\(1\) 题目描述 给定一个长为\(n\)的序列,有\(m\)次操作,每次操作为以下三种之一。 修改序列中的一个数 求序列中某连续一段所有数的两两乘积的和\(\text{mod} 1000000007\)。 求序列中某连续一段所有相邻两数乘积的和\(\text{mod} 1000000007\) ......
线段 笔记

【模板】李超线段树 / [HEOI2013] Segment

李超线段树是一种用于维护平面直角坐标系内线段关系的数据结构,插入直线/线段,支持查询单点极值 李超树的经典应用是斜率优化,可以看下这篇文章 李超线段树没有用懒标记实现区间修改,而用的是标记永久化 其实标记永久化与我们对lazy标记的理解非常相同,可以看看LYD蓝书上对标记永久化的解释,都是累积某个节 ......
线段 模板 Segment HEOI 2013

lazy线段树模板

import java.io.*; import java.util.*; public class Main { static int N = (int)1e5+10; static long[] arr = new long[N]; static long[] sum = new long[N< ......
线段 模板 lazy

线段树板子

package ICPC; import java.util.*; import java.math.*; import java.io.*; import java.text.DecimalFormat; import java.text.NumberFormat; class node{ int ......
线段 板子

线段树 2

由于有两个操作,我们要对乘法和加法设置一个优先级 我们来看看先乘后加,lazy2表示乘数,lazy1表示加数(前者初始值为\(1\),后者初始值为\(0\)) 根据我们对lazy的理解,一个节点的和的真实值,为这个节点到根节点的路径中,对每一个节点依次先乘lazy2再加lazy1得到的最终结果 假设 ......
线段

线段树例题

目录线段树例题P3372 【模板】线段树 1题目描述解题思路CodeP3373 【模板】线段树 2题目描述解题思路CodeP6492 [COCI2010-2011#6] STEP题目描述解题思路CodeP2184 贪婪大陆题目描述解题思路CodeP4588 [TJOI2018] 数学计算题目描述解题 ......
线段 例题

线段上离p最近的点 - 投影方式

判断依据 1) 投影结果<0,则线段端点a离p最近 2) 投影结果>线段ab的长度,则线段端点b离p最近 3) 否则p在线段上的垂点为最近点 p与ab不共线时 1) p在线段两侧 2-a) p在线段内侧 2-b) p在线段内侧2 p与ab共线时 1) p在线段两侧 2-a) p在线段内侧 2-b) ......
线段 方式

动态开点线段树如何开空间

昨天模拟赛开小了导致 \(100\to 70\) 沦为暴力同分。遂记之。 单点修改 \(m(\log V+\delta)\)。 区间修改 \(2m(\log V+\delta)\)。注意这个 \(2\),就很灵性啊。(欸真的是 \(2\) 嘛) 关键在于 1G 空间用了 200M 还乱开小空间的行为 ......
线段 动态 空间

吉司机线段树

\(mxb\) 为历史最大值,\(tg1,tg2,tg3,tg4\) 分别对应最大值真实 \(tag\) ,其他值真实 \(tag\) ,最大值最大 \(tag\) ,其它值最大 \(tag\) #include<bits/stdc++.h> using namespace std; #define ......
线段 司机

线段树与历史最值和区间最值问题

线段树与历史最值问题 P4314 CPU 监控 Description 给定数组 \(\{a_i\}\),维护以下操作。定义一个辅助数组 \(\{b_i\}\),每次操作完后令 \(b_i=\max(a_i,b_i)\)。 查询 \(\max_{i=l}^{r} a_i\)(区间最值) 查询 \(\ ......
线段 区间 问题 历史

syoj.1827. 线段传送带题解

前情提要-三分 1827. 线段传送带 P2571 [SCOI2010] 传送带 省流:三分套三分。 在二维平面上有两个传送带,一个从 A 点到 B 点,一个从 C 点到 D 点,速度分别是 p 和 q,在平面内其他点的速度为 r。求 A 点到 D 点的最小速度。 考虑从 A 到 D 的路程一定是 ......
线段 题解 传送带 syoj 1827

线段树详解

定义 什么是线段树 线段树是一种二叉搜索树,每个节点都存储了一个区间的问题。 能够解决的问题 序列维护修改以及查询区间上的最值、求和等,修改和查询的时间复杂度为 \(O\)(\(log\) \(n\))。 与其他 RMQ 算法的区别 算法 适用范围 优点 缺点 线段树 动态 可执行的操作多 常数大 ......
线段

简单线段树

一、什么是线段树? 线段树是怎样的树形结构? 线段树是一种二叉搜索树,每个结点都存储了一个区间,也可以理解成一个线段,你要从这些线段上进行搜索操作得到你想要的答案。 线段树能够解决什么样的问题? 线段树的适用范围很广,可以在线维护修改以及查询区间上的最值,求和。 需要注意的是,线段树只可以维护满足结 ......
线段

CF1784C Monsters (hard version) 题解 线段树

题目链接:https://codeforces.com/problemset/problem/1784/C 题目大意: 你面前有 \(n\) 只怪兽,每只怪兽都有一个初始血量,你可以进行两类操作: 操作1:选择任意一个血量大于 \(0\) 的怪兽,并将它的血量降低 \(1\); 操作2:将所有存活的 ......
线段 题解 Monsters version 1784C

线段树

线段树 什么是线段树 线段树(英语:Segment tree)是一种二叉树形数据结构,1977年由Jon Louis Bentley发明[1],用以存储区间或线段,并且允许快速查询结构内包含某一点的所有区间。 一个包含n个区间的线段树,空间复杂度为O(n),查询的时间复杂度则为O(logn+k)}, ......
线段

刷题 ST表、单调栈、线段树->区间最值

2023.12.13 cf1904D2 解题思路 首先,a[i]大于b[i]时肯定不行,等于就满足了,直接过掉 其次,要想使得a[i]等于b[i],就要在a[i]左右找最近的j使得a[j]=b[i](最近的最优,可证) k是i和j中间的一个数,想要满足题意,要满足以下两个条件(a[j]=b[i]) ......
线段 区间 gt

【线段树入门】P3353 在你窗外闪耀的星星(区间求和)

这题正解是前缀和,我用线段树练练手>< 1 1 //笔记-自用 2 2 //#pragma GCC optimize("Ofast") 3 3 //#pragma GCC optimize("unroll-loops") 4 4 #define _CRT_SECURE_NO_WARNINGS 5 5 ......
线段 区间 星星 P3353 3353

【线段树入门】 P1198 最大数(区间最大值+无懒标记+末尾插入)

1 //笔记-自用 2 //#pragma GCC optimize("Ofast") 3 //#pragma GCC optimize("unroll-loops") 4 #define _CRT_SECURE_NO_WARNINGS 5 #define All(a) a.begin(),a.en ......
线段 最大值 末尾 区间 标记

线段树入门】P3870 开关(区间异或和)

1 // 2 //#pragma GCC optimize("Ofast") 3 //#pragma GCC optimize("unroll-loops") 4 #define _CRT_SECURE_NO_WARNINGS 5 #define All(a) a.begin(),a.end() 6 ......
线段 区间 P3870 3870

【线段树入门】P3373 线段树 2(区间乘加)

//笔记-自用 //#pragma GCC optimize("Ofast") //#pragma GCC optimize("unroll-loops") #define _CRT_SECURE_NO_WARNINGS #define All(a) a.begin(),a.end() #defin ......
线段 区间 P3373 3373

2020年初一初二集训队(线段树) 基本操作

其他 线段树详解与实现 - 知乎⁤ (zhihu.com) 线段树 - OI Wiki (oi-wiki.org) 线段树 学习笔记 - xujindong 的博客 - 洛谷博客 (luogu.com.cn) 简介 线段树(segment tree)是一种二叉搜索树,也是平衡二叉树,它的每一个结点对 ......
集训队 线段 基本操作 2020

可持久化线段树(主席树)

给定 n 个整数构成的序列 a,将对于指定的闭区间 [l,r] 查询其区间内的第 k 小值。 题目一开始的离散化复杂度为\(O(n\log n)\),构建基础主席树复杂度为\(O(n\log n)\),统计并插入的复杂度是\(O(n\log n + n\log n)=O(n\log n)\),询问的 ......
线段 主席
共386篇  :1/13页 首页上一页1下一页尾页