区间 线段 板子

「线段树」笔记

基础 建树 void build(int p, int l, int r) { t[p] = (tree){l, r, 0}; if (l == r) { t[p].sum = val[l]; return; } int mid = (l + r) >> 1; build(lp, l, mid); ......
线段 笔记

【模板】可持久化线段树 2

【模板】可持久化线段树 2 题目背景 这是个非常经典的可持久化权值线段树入门题——静态区间第 $k$ 小。 数据已经过加强,请使用可持久化权值线段树。同时请注意常数优化。 题目描述 如题,给定 $n$ 个整数构成的序列 $a$,将对于指定的闭区间 $[l, r]$ 查询其区间内的第 $k$ 小值。 ......
线段 模板

区间合并

一、题目来源 AcWing算法基础课-803.区间合并 二、题目描述 给定 \(n\) 个区间 \([l_i,r_i]\),要求合并所有有交集的区间。 注意如果在端点处相交,也算有交集。 输出合并完成后的区间个数。 例如:\([1,3]\) 和 \([2,6]\) 可以合并为一个区间 \([1,6] ......
区间

loj144&145 dfs序+树状数组/线段树

[https://loj.ac/p/144](loj144) [https://loj.ac/p/145](loj145) 两题非常相似,一题的权值修改是在点上的,一题的权值修改是在整棵子树上的。 首先我们要了解dfs序,并记录每个节点的子树大小sz,对于一个节点,在dfs序上sz长的区间全都是他的 ......
线段 数组 loj 144 amp

【模板】线段树1(洛谷P3372)

1 #include <iostream> 2 #include <cstdio> 3 4 using namespace std; 5 6 template <class T> 7 inline void read(T &s) 8 { 9 s = 0; 10 int w = 1; 11 char ......
线段 模板 P3372 3372

2维区间树状数组

```cpp void add(ll x, ll y, ll z){ for(int X = x; X <= n; X += X & -X) for(int Y = y; Y <= m; Y += Y & -Y){ t1[X][Y] += z; t2[X][Y] += z * x; t3[X][Y] ......
数组 区间

计算几何板子

#define i128 long long inline i128 ABS(i128 x){return x<0?-x:x;} struct frac{ i128 x,y; frac(){} frac(i128 xx,i128 yy=1ll):x(xx),y(yy){ if(y<0)x=-x,y= ......
板子 几何

可视化学习:利用向量计算点到线段的距离并展示

向量运算是计算机图形学的基础,这个例子就是向量的一种应用,是利用向量来计算点到线段的距离,这个例子中可视化的展示采用Canvas2D来实现 ......
线段 向量 点到

区间dp

1.acwing 282石子合并问题 1 #include<bits/stdc++.h> 2 using namespace std; 3 4 int n; 5 const int N = 310; 6 int s[N]; 7 int f[N][N]; 8 9 int main () 10 { 11 ......
区间

【区间 dp】UVA1331 最大面积最小的三角剖分 Minimax Triangulation 题解

UVA1331 区间 dp。 有一个很经典的问题:给定一个凸多边形,求它的最优三角剖分,对每个三角形规定一个权函数 \(f(i,j,k)\),求所有剖分方案中最大的权值。 发现这个东西不好直接入手。但是这个东西与矩阵最优链乘是相似的。考虑区间 dp。因为随意的转移是难以维护的,维护区间信息就等于强制 ......
题解 区间 Triangulation 面积 Minimax

【线段树优化 dp】AT_dp_w Intervals 题解

AT_dp_w 先不看数据范围,考虑 dp。 令 \(f_i\) 表示前 \(i\) 个字符且强制第 \(i\) 个字符为 \(1\) 的最大分数。 则 \(f_i = \max(f_{j - 1} +\sum\limits_{r_k\ge i\ge l_k\ge j}a_k)\)。 这个是一份 \ ......
线段 题解 Intervals AT_dp_w AT

线段树好题汇总(持续更新中)

线段树作为信息竞赛中最为常用的数据结构之一, 常常是区分非竞赛选手和竞赛选手的显著标志 其中最为有趣的就是有关区间可加性的探讨, 这里将会放一些我自认为可以学到东西的线段树题目, 同时也会附赠上自己的一些思考, 助读者加深对线段树的理解 Educational Codeforces Round 23 ......
线段

第 372 场周赛(位运算技巧,跳表 + 二分,线段树)

class Solution: def findMinimumOperations(self, s1: str, s2: str, s3: str) -> int: cnt = 0 for a, b, c in zip(s1, s2, s3): if not a == b == c: break c ......
线段 技巧 372

关于区间连续段问题 (析合树)

有部分题目需要处理关于区间连续段的问题(一般来说,对于一个排列,如果一个区间的值连读,就为一个连续段。)区间连续段看似不太好维护,其实有一种处理它的利器:析合树。(也可能只是析合树的思想),就能方便的维护这一个东西。 析合树 其实这个名字不重要 ......
区间 问题

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

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

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

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

NOIP 考前板子复习

网络流 树链剖分 LCT 主席树 分块 莫队 带修莫队 回滚莫队/不删除莫队 树上莫队 平衡树 FHQ Treap Splay 旋转卡壳 ......
板子 NOIP

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

区间树是在平衡树上维护的数据结构,按照左端点大小排序。详见《算法导论》。 算法设计思路 红黑树的拓展 在红黑树上维护结点属性\(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 ......
区间 训练营 随想 字母 代码

写板子的时候发现的易错点

KMP void get_nt(){ int j=0; for(int i=2;i<=tl;++i){ while(j&&t[i]!=t[j+1])j=nt[j]; if(t[j+1]==t[i])j+=1; nt[i]=j; } } void KMP(){ int j=0; F(i,1,sl){ ......
板子 时候

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 ......
区间

大非质数取模算组合数板子

const int N=1e5+10,M=13; int n,mod,l,r; ll ans,p[M],br[M],phi; inline ll ksm(ll a,ll b){ ll d=1; while(b){ if(b&1) d=d*a%mod; a=a*a%mod; b>>=1; } retu ......
质数 板子

李超线段树

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