线段 区间

[学习笔记]主席树(可持久化权值线段树)

注:本蒟蒻第一次用 html 写文章,可能写的不是很好 主席树简介 主席树,全称为可持久化权值线段树。 有的人不知道什么是可持久化,其实很好理解,就是某个 mhy 游戏最早是 1.0 版本,至今到了 4.2 版本,可持久化就是可以在 1.0 ~ 4.2 版本间任选一个版本出来进行修改。 例题1 P3 ......
线段 主席 笔记

用矩阵乘法推导区间覆盖区间历史和

区间加区间历史和,在网上的博客已经烂大街了。但还没有区间覆盖区间历史和。 众所周知,我们一般把线段树上维护的分类为信息与懒标记。用矩阵乘法的角度来看就是 I 和 T 两个矩阵。 线段树上,我们要处理信息与信息合并,信息与懒标记合并,懒标记与懒标记合并。 信息与信息合并就是矩阵相加。其他两个是乘。 于 ......
区间 乘法 矩阵 历史

区间树上查找所有与给定区间相交的区间-算法复杂度正确性证明

区间树是在平衡树上维护的数据结构,按照左端点大小排序。详见《算法导论》。 算法设计思路 红黑树的拓展 在红黑树上维护结点属性\(min, max\): \(min\)表示该结点及其所有后代结点中的区间低端的最小值。 \(max\)表示该结点及其所有后代结点中的区间高端的最大值。 在插入时,对结点路上 ......
区间 复杂度 正确性 算法

线段树-多个懒标记pushdown

P3373 【模板】线段树 2 这里需要用到两个懒标记,一个懒标记为add,记录加,另一个懒标记为mul,记录乘。 我们需要规定一个优先级,然后考虑如何将懒标记下传。 这里无非有两种顺序,一种是先乘后加,另一种是先加后乘。 我们先看先加后乘。 \[(sum + add1) * mul1 \]当我们的 ......
线段 标记 pushdown 多个

abc327F - Apples(线段树)

https://atcoder.jp/contests/abc327/tasks/abc327_f 我们将时间看作x轴,位置看作y轴,那么我们随着时间增加,维护新加的点对区间的贡献,同时减去过时的点,线段树区间加法维护最大值即可。 #include<cstdio> #include<algorith ......
线段 Apples 327F abc 327

JS判断点是否在线段上

本文利用向量的点积和叉积来判断点是否在线段上。 基础知识补充 从零开始的高中数学——向量、向量的点积、带你一次搞懂点积(内积)、叉积(外积)、Unity游戏开发——向量运算(点乘和叉乘 说明 点积可以用来判断两个向量的夹角,如果这个夹角是0或者180度,说明这个点在直线上; 叉积可以用来判断一个点到 ......
线段

蓝桥杯管道 -- 二分, 区间覆盖

蓝桥杯管道 -- 二分, 区间覆盖 原题链接 参照执梗大佬的代码, 我太菜了wuwuwu...... import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.S ......
蓝桥 区间 管道

代码随想训练营第三十六天(Python)| 435. 无重叠区间、763.划分字母区间、56. 合并区间

435. 无重叠区间 class Solution: def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int: intervals.sort(key=lambda x: x[0]) count = 0 for i in r ......
区间 训练营 随想 字母 代码

P8317 [FOI2021] 幸运区间

P8317 [FOI2021] 幸运区间 题目传送门 分治 + dfs 首先可以发现 \(k\) 和 \(d\) 很小,所以是可以搜索的。 那么就考虑如何枚举区间,显然 \(n^2\) 枚举是会超时的,所以就考虑分治来求。 求的过程中就分成三种情况来处理:在左边一半,在右边一半,以及跨越中间点。显而 ......
区间 P8317 8317 2021 FOI

Excel区间频率统计

有时候会使用Excel统计一下分段区间数据的频率,也就是数据在不同的区间的分布情况。下面案例就是使用Excel统计一下数据的区间分布情况。 使用frequency函数可以得到想要的结果。 公式=frequency(数据列,分界区间),然后CTRL + SHIFT + ENTER 注意点:要全部选中要 ......
区间 频率 Excel

区间DP

一.定义 即对于一个区间进行的dp 二.经典转移方程 1.枚举断点型 f[l][r]=min(f[l][k-1],f[k][r]) (l+1<=k<=r) 2.左右端点型 f[l][r]=min(f[l][r-1],f[l+1][r]) 3.有一定条件型 f[l][r][k]=f[l][r-1][k ......
区间

李超线段树

极其BT的东西,又卡精度又卡边界情况,代码还异常长(依托答辩)。 解决问题 给出一堆线段或直线(\(log^2\) 或 \(log\) 复杂度),问某个 \(x\) 坐标上最高的线。可以搭配 \(DP\) 进行转移上的优化,常见模型为 \(n^2\) 的 \(f_u=min(a_u\times a_ ......
线段

线段树

线段树引入遇到过好多次线段树的题目,要么就是用其他的方法去解决,要么就是不会写!!今天痛定思痛,决定好好归纳整理一下线段树 线段树解决的是「区间和」的问题,且该「区间」会被修改 什么意思呢?举个简单的例子,对于 nums = [1, 2, 3, 4, 5] 如果我们需要多次求某些区间的和,是不是首先 ......
线段

区间 DP、环形 DP

区间 DP 区间 DP 是可以由小区间的结果往两边扩展一位得到大区间的结果,或者由两个小区间的结果可以拼出大区间的结果的一类 DP 问题 往往设 \(dp[i][j]\) 表示处理完 \([i,j]\) 区间得到的答案,按长度从小到大转移 因此一般是先写一层循环从小到大枚举长度 \(len\),再写 ......
环形 区间 DP

力扣2406. 将区间分为最少组数

给你一个二维整数数组 intervals ,其中 intervals[i] = [lefti, righti] 表示 闭 区间 [lefti, righti] 。 你需要将 intervals 划分为一个或者多个区间 组 ,每个区间 只 属于一个组,且同一个组中任意两个区间 不相交 。 请你返回 最 ......
区间 2406

理解线段树和主席树:解决区间操作的利器

在计算机科学和算法领域,区间操作问题是一类常见且重要的问题,它们涉及到在一维数据结构中执行查询和更新操作。线段树和主席树是两种用于解决这类问题的强大数据结构。本文将介绍这两种树状数据结构,以及它们在不同应用领域中的使用。 什么是线段树? 线段树是一种用于处理区间操作问题的数据结构,它的核心思想是将一 ......
线段 区间 利器 主席

原点到线段的垂足

原理: 1) 求出向量ao在ab上的投影距离 2) a沿着ab方向移动投影距离就是垂足点的位置 // 获得原点到直线ab的垂点 public static Vector2 GetPerpendicularToOrigin(Vector2 a, Vector2 b) { var ab = b - a; ......
线段 原点

线段树历史值

P6242 【模板】线段树 3 支持区间加,区间取 \(\min\),区间求和,区间 \(\max\),区间历史 \(\max\)。 先提一嘴吉司机。 就是对线段树的每个节点记录最大值,严格次大值和最大值个数,只在 \(se<v<mx\) 的区间操作,否则向下递归。如果没有区间加,复杂度势能分析是 ......
线段 历史

洛谷P3046 海底高铁 巧用差分统计经过区间次数

洛谷P3046 海底高铁 -差分统计经过区间次数 题目贴在这里P3406 海底高铁 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 分析 本题题干很长,但是题意理解很简单。就是给定n个节点,每次仅能在相邻的两个节点之间移动,且任意两个节点之间的高铁费用也不一样。 依据题意,假设从3 ......
区间 海底 次数 P3046 3046

js返回未来或过去7天等时间合集(任意日期区间合集)

/** * 时间前后向前推算时间集合 * @param {string:before|after} timebd:获取时间往后推,还是往前推, * @param {boole} haveCurrentDay:包不包含当天时间, * @param {number} Days:计算几天的时间, * @p ......
区间 日期 时间

区间合并

AcWing笔记 -- 区间合并 前言 给定多个区间,如[1, 8] , [7 , 12] , [15, 18], [18 , 25]。可以看出,这些区间之间是有交集的,比如[1,8]和[7,12]以及[15,18],[18,25]。这两对区间可以合并,变为[1, 12]以及[15 , 25]。区间 ......
区间

[NOI2016] 区间

[NOI2016] 区间 题目描述 在数轴上有 $n$ 个闭区间从 $1$ 至 $n$ 编号,第 $i$ 个闭区间为 $[l_i,r_i]$。 现在要从中选出 $m$ 个区间,使得这 $m$ 个区间共同包含至少一个位置。换句话说,就是使得存在一个 $x$ ,使得对于每一个被选中的区间 $[l_i,r ......
区间 2016 NOI

比较典的区间dp

P1220 关路灯 很典的一道题,但是以前居然不知道。 数据范围很小,可以直接搜索通过,加一些奇奇怪怪的贪心策略和剪枝即可和正解差不多速度通过。 \(Code_violent\) ll ans=9e18; int n,st,loc[51],p[51]; void dfs(int x,ll t,ll ......
区间

区间分组贪心

是我见识少了,真没见过这种的…… 传送门 如果看成有序排列的\((x,y)\)配对,那么可以写成\(r_x-l_y\)。(因为如果是负数,会在\(y,x\)的时候被枚举到,这样就不用考虑max和绝对值了)。 于是,就是分成恰好长度为\(\frac{n}{2}\)的两组,一组贡献为\(r_i\),一组 ......
区间

Exhausted? 题解(线段树)

Exhausted? 题解 前言: 看本篇题解,您如果想要掌握所有知识点的话,请您先去了解下什么是霍尔定理,当然如果可以的话,可以去看看我的这个博客。 涉及的算法和思想知识点: 线段树、扫描线。 霍尔定理。 较少的容斥原理。 正文: 理论分析: 从简单入手:我们想想,要是值域再小一点的话,我们可以怎 ......
线段 题解 Exhausted

线段树合并

空间复杂度,一般是根据操作次数来计算的,或者按照题目的空间,算出最大开多少数组。 根据感性理解,线段树的深度是\(\lceil log_2n\rceil\)的,反正\(d = \lfloor log_2n\rfloor+1\)肯定够。 那\(m\)次操作,注意这个操作不一定是原题中的询问,而是你对于 ......
线段

向量叉乘判断两点是否在线段同侧

ap1×ab与ap2×ab的结果异号,则表示两点在线段两侧;同号则表示在线段同侧 有一个点在线段上或两个点都在线段上,当做在线段同侧处理 //两点是否在线段同侧 public static bool IsTwoPointSameSideOfSegment(Vector2 a, Vector2 b, ......
线段 向量

用线段树来接树状数组类的问题

大致解决的问题就是区间查询以及单点的修改 #include<bits/stdc++.h> #define int long long using namespace std; const int N=5e5+10; int a[N],tag[N<<2]; struct{ struct{ int l, ......
线段 数组 问题