随笔分类 -  算法

线段树优化建图
摘要:使用场景 单点向区间、区间向单点,区间向区间建边 实现原理 用线段树的一个节点管辖一段图上区间的顶点 实现步骤 将原图中的顶点拆点,出点和入点; 建立两棵线段树,出点的树 otree ,入点的树 itree ; 出点的树由子节点连向父节点,边权为 0 ,入点的树由父节点向子节点连边,边权
40
0
0
【计算几何】极角排序
摘要:前置知识 三角函数。 引文 给定一个中心点 On 个点,求按点与 O 的连线与 x 轴的夹角排序后的点对。 正文 显而易见,不论我们如何移动 O 点, 点对都是不变的,所以,化难为简,索性将 O 点直接移动到原点上, 然后同过三角函数,我们可以算出这个角度, 直接调用
51
0
0
【计算几何】基础知识
摘要:前置知识点 (1) pi=acos(1); (2) 余弦定理 c2=a2+b22abcos(t) 浮点数的比较 const double eps = 1e-8; int sign(double x) // 符号函数 { if (fabs(x) < eps) retu
96
0
0
【线段树】线段树合并
摘要:使用场景 有多棵线段树,维护相同的区间 [1,n] ,通常是全职线段树, 每一棵线段树维护了区间内的最大值(区间元素和), m 次单点修改,每次修改一棵线段树的位置为 pos 的值, m 次修改之后,所有线段树对应区间位置的权值相加,并维护区间最大值。 代码 inline int mer
35
0
0
【线段树】动态开点
摘要:使用场景 维护的区间太大以至于 4N 存不下,通常是权值线段树; 维护的区间下标存在负数; 时间复杂度 全部开点,则 O(2N1) 每递归一次,最多开点 O(logN) ,若调用 M 次, O(MlogN) 原理 若一段子区间 [L,R] 对应的线段树节点为 cur
383
1
1
【计算几何】浅谈凸包Andrew算法
摘要:前置知识 计算几何基础知识。 引文 这样一个问题, 有许多个杆子,需要用绳子围住所有的杆子,然鹅没有很多的绳子,求最短需要多少绳子。 整个图大概是这样的, 正文 我们要如何解决这题呢?不难想出,最优解法应该是这样的, 而这个图中隐藏着解决这道题的奥秘。 特别的这个图被我们称为凸包。 首先我们可以把它
93
1
0
【计算几何】全代码
摘要:const double eps = 1e-7; const double pi = acos(-1); int dcmp(double x) { // 判负 return (fabs(x) <= eps) ? 0 : (x < 0 ? -1 : 1); } struct Point { // 点
10
0
0
【图论】浅谈JohnSon全源最短路
摘要:## 前置知识 SPFA、Dijkstra. ## 引文 先是给一道题目: ``` 给定一个包含 n 个结点和 m 条带权边的有向图,求所有点对间的最短路径长度,一条路径的长度定义为这条路径上所有边的权值和。 ``` 看到最短路,你也许会想到最短路; 然而发现它居然会有负边,也就是说可能会有负环,你
21
0
0
【字符串】AC自动机
摘要:使用场景 多模式串匹配问题 Fail 数组 fail 数组是 AC 自动机较为重要的一部分, 与 KMP 中 nxt 数组的地位相似, 但是 fail 数组具体是用来干什么的呢, 打个比方,你有两个字符串,分别为 SheAKioi 、 AKioi 、 heioi 、 noi, 特别的第一
37
0
0
点击右上角即可分享
微信分享提示
深色
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.