区间 线段 板子

线段树

首先是建树 我们先构建整棵树的框架 struct node { int l,r; string data; }g[N*4];//不一定非要构建结构体,看题目需求,如果不涉及左右范围的话就可以直接构造数组 //n表示的是树上每个结点的数值,比如说第一个结点为1,那莫第一个结点的左子树为2,右子树为3/ ......
线段

AcWing 802. 区间和

题面: 假定有一个无限长的数轴,数轴上每个坐标上的数都是 \(0\) 。 现在,我们首先进行 \(n\) 次操作,每次操作将某一位置 \(x\) 上的数加 \(c\) 。 接下来,进行 \(m\) 次询问,每个询问包含两个整数 \(l\) 和 \(r\) ,求出在区间 \([l,r]\) 之间的所有 ......
区间 AcWing 802

线段树优化建图

线段树优化建图学习笔记 CF786B Legacy 题意: 有 n 个点、q 次操作。每一种操作为以下三种类型中的一种: 操作一:连一条 u 到 v 的有向边,权值为 w。 操作二:连一条 u 到 [l,r] 的有向边,权值为 w。 操作三:连一条 [l,r] 到 u 的有向边,权值为 w。 求从点 ......
线段

【数据结构】线段树 (二) 学习笔记

线段树(二) 点击查看:线段树(一) 学习笔记 本文介绍权值线段树与动态开点线段树,(可能后面还会加线段树合并等等)。 权值线段树 线段树的动态开点 线段树合并 推荐题目 && 参考资料 && 拓展阅读 《算法竞赛进阶指南》 0x43 线段树 P3870 [TJOI2009] 开关 P1438 无聊 ......
线段 数据结构 结构 笔记 数据

李超线段树

问题: 洛谷P4097 在平面直角坐标系维护两个操作: 1.加入一条线段。 2.求目前平面直角坐标系中截一条直线\(x=k\)中与线段交点\(y\)最大的是那一条线段。 解决: 李超线段树模板。 首先建一个以\(x\)为区间的线段树。 和普通线段树的主要区别是在对懒标记的处理上,这里是是没有单独的下 ......
线段

tarjan无向图割点板子

//无向图割点模板 #include<bits/stdc++.h> #define int long long #define endl '\n' #define N 20001 using namespace std; template<typename Tp> inline void read( ......
板子 tarjan

P8111 [Cnoi2021] 区间

[Cnoi2021] 区间 题目背景 Cirno 有一个区间 \([a,b](1\le a \le b \le n)\),而你的任务是在规定的次数内帮 Rumia 猜出这个区间。 每次,你可向Cirno询问一个数字 \(k\),而 Cirno 会告诉你这个数字与区间 \([a,b]\) 的关系。 题 ......
区间 P8111 8111 2021 Cnoi

Luogu P6292 区间本质不同子串个数

给定字符串 \(S\),\(m\) 次询问 \(S_{l_i}S_{l_i + 1} \cdots S_{r_i}\) 中本质不同的字符串个数。 \(|S| \le 10 ^ 5, m \le 2 \times 10 ^ 5\)。 考虑将询问离线,右端点扫描线,维护 \(f_l\) 为 \(S_l ......
区间 个数 本质 Luogu P6292

区间合并算法总结

区间合并使用贪心算法,对于区间问题,通常需要对左端点排序、右端点排序或者左端点和右端点双关键字排序。区间合并算法的算法步骤: 1. 按照区间左端点排序。 2. 扫描过程中,每次维护一个当前的区间。 题目链接: https://www.acwing.com/problem/content/805/ 代 ......
区间 算法

线段树优化建图

问题: CF786B 给定一个\(n\)个点,\(m\)次连边的有向图,有三种连边(均有边权)方式: 1.\(u\to v\),一条\(u\)指向\(v\)的连边。 2.\(u\to [l,r]\),\(u\)向在区间\([l,r]\)的点分别连一条边。 3.\([l,r]\to v\),在区间\( ......
线段

像使用stl一样使用线段树 ——AtCoder Library(转载https://zhuanlan.zhihu.com/p/459579152)

地址:https://zhuanlan.zhihu.com/p/459579152 我这里翻译一下官方的文档。 首先需要满足几个性质。 (注意 ∗ 是个操作,不是单纯的一个乘号) 1)操作满足结合律 即 (a∗b)∗c=a∗(b∗c)2)操作需要有个幺元(基本元/单位元) a∗e=e∗a=a 如果你 ......
线段 459579152 zhuanlan AtCoder Library

【AtCoder Beginner Contest 330)】[E - Mex and Update ] 线段树+二分

本题可以用线段树+二分的方式实现。代码如下: import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.StreamTokenizer; // Pr ......
线段 Beginner AtCoder Contest Update

深圳大学计算机系统3标准格式-实验二:乘法器板子实验

深 圳 大 学 实 验 报 告 课 程 名 称: 计算机系统(3) 实验项目名称: 加法器和乘法器实验 学 院: 计算机与软件学院 专 业: 计算机与软件学院所有专业 指 导 教 师: 罗秋明 报告人: 刘俊楠 学号: 2017303010 班级: 01 实 验 时 间: 2021.11.12 实验 ......
乘法器 乘法 板子 格式 计算机

可持久化线段树小记

可持久化线段树小记 首先你需要完成这两个模板:P3919 【模板】可持久化线段树 1(可持久化数组) P3834 【模板】可持久化线段树 2 T1 P1383 高级打字机 题意: \(n\) 个询问,\(3\) 种操作: 1.T x:在文章末尾打下一个小写字母 \(x\)。 2.U x:撤销最后的 ......
线段 小记

apache时间区间工具类DurationFormatUtils

<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.10</version> </dependency> 计算两个日期相差天数/月数/年数 Date ......

交点 - 射线与线段交点 - 直线方程方式

效果 //求射线与线段交点 - 直线方程方式 public static bool IsRaySegmentIntersect(Vector2 o, Vector2 dir, Vector2 a, Vector2 b, out Vector2 point) { point = Vector2.zer ......
交点 线段 射线 方程 直线

E. Permutation Sorting 树状数组实现离线区间数点

题目链接🔗 题意解读:给定一串数组a,每次操作将所有的 a[i] != i 的数循环右移一位,直到所有的数都在自己的位置上。求对于1到n之间的每个i,需要移动多少次。 首先,先考虑移动次数的问题: 为了简化循环问题,考虑将数组长度手动扩充至 2 * n,对于所有的位置 i 上的一个 a[i] ,分 ......
数组 区间 Permutation Sorting

AcWing 1129. 热浪 (dij板子题

package 算法提高课; import java.util.Arrays; import java.util.PriorityQueue; import java.util.Scanner; public class acw1129 { static class PII implements C ......
板子 热浪 AcWing 1129 dij

AcWing 1128. 信使 (dij板子题 + 求花费最大的那个点的花费

package 算法提高课; import java.util.Arrays; import java.util.PriorityQueue; import java.util.Scanner; public class acw1128 { static int n, m; static int[] ......
板子 信使 AcWing 1128 dij

AcWing 1127. 香甜的黄油 (dij板子不能背太死, 需要知道含义灵活变通

package 算法提高课; import java.util.Arrays; import java.util.PriorityQueue; import java.util.Scanner; public class acw1127 { static int n, p, c; static in ......
板子 黄油 含义 AcWing 1127

【2024省选冲刺计划】数据结构相关-线段树进阶

线段树进阶 0x01 李超线段树 FZPJ4519 [2021冬令营模拟] 上古遗迹 【题目背景】“沙……沙……沙……”独行者的脚步一次次被刻进沙漠中,干冷的风携沙尘在男子的四围穿过。 “该死……这沙尘什么时候才能消停会儿……”男子止不住地咳嗽,随即停了下来,开始查看便携式投影设备上的信息,“应该就 ......
线段 数据结构 结构 数据 2024

带修区间mex

1 x y 把x改成y.2 x y 询问区间[x,y]的mex. part0 polylog做法 考虑整体二分,那就转换成了. 保留权值[vl,vr)的数,带修区间数颜色数(是否全部出现过 <=> 颜色数=vr-vl). 这个问题可以直接cdq. 复杂度O(n log^3 n). part1 考虑分 ......
区间 mex

树状数组和线段树

树状数组: 1.将某一个数加上k 2.求出某区间每一个数的和 #include<bits/stdc++.h> using namespace std; typedef long long ll; ll n,m,a[500000+10]; ll lowbit(ll x){return x&(-x);} ......
线段 数组

算法学习笔记(43): 可持久化线段树 - 区间加!

可持久化线段树 也叫做主席树,单点修改时简单,使用空间 \(O(\log n)\),问题在于如何区间加。 区间覆盖可以做,但是似乎只能单点查? 所以我们需要引入标记永久化的概念。 一个标记在没有下放前会放在 \(O(\log n)\) 个点上,这覆盖了整个操作区间。 一般来说我们会 update 更 ......
线段 区间 算法 笔记 43

线段树优化建图

CF786B 题意: 定义 \((u,v,w)\) 表示 \(u\) 向 \(v\) 连了边权为 \(w\) 的边。 有三种连边操作 \((u,v,w)\) \(\forall i\in [l,r],(u,i,w)\) \(\forall i\in [l,r],(i,u,w)\) 求最短路。 暴力加 ......
线段

KMP板子

update on 2023.11.17 NOIP前来复习板子,发现KMP整理的不是很到位,所以更新详细一些。 模板题 抽象的blog 浅显易懂的讲解视频:(dalao讲得太好了\(%%%\)) 备用网址 \(kmp\)(字符串匹配)的概念: 主串:被匹配的字符串 模式串:匹配的串 最长前后缀:一个 ......
板子 KMP

高精度板子

高精度模板 copy老师的代码 @_xuefeng #include<bits/stdc++.h> using namespace std; char ch[500000]; struct node{ int s[1000000],len; void init(){ scanf("%s",ch+1) ......
高精 板子 高精度

wxnp---板子

求逆序对 归并排序 首先是一个排序作用,然后可以求逆序对 平均时间复杂度:O(nlogn),空间复杂度:O(n) 代码: int n,ans=0; int a[N],temp[N]; void merge_pai(int l,int r,int mid){ int i=l,p=l,j=mid; wh ......
板子 wxnp

区间DP

区间DP 区间DP 题目描述 设有\(N\)堆石子排成一排,其编号为\(1,2,3,…,N\)。 每堆石子有一定的质量,可以用一个整数来描述,现在要将这\(N\)堆石子合并成为一堆。 每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的 ......
区间

交点 - 求两线段交点2

效果 会用到的知识 相交 - 两线段是否相交 - yanghui01 - 博客园 (cnblogs.com) 线性代数 - 已知点求直线方程 - yanghui01 - 博客园 (cnblogs.com) 交点 - 两直线交点 - yanghui01 - 博客园 (cnblogs.com) //两线 ......
交点 线段