微信扫一扫打赏支持
摘要: 延时标记 阅读全文
posted @ 2017-12-28 22:33 范仁义 阅读(337) 评论(0) 推荐(0) 编辑
摘要: 曼哈顿距离(坐标投影距离之和)d(i,j)=|X1-X2|+|Y1-Y2|. 我们可以定义曼哈顿距离的正式意义为L1-距离或城市区块距离,也就是在欧几里德空间的固定直角坐标系上两点所形成的线段对轴产生的投影的距离总和。 例如在平面上,坐标(x1, y1)的i点与坐标(x2, y2)的j点的曼哈顿距离 阅读全文
posted @ 2017-12-28 22:10 范仁义 阅读(846) 评论(0) 推荐(0) 编辑
摘要: 曼哈顿距离最小生成树与莫队算法(总结) 1 曼哈顿距离最小生成树 曼哈顿距离最小生成树问题可以简述如下: 给定二维平面上的N个点,在两点之间连边的代价为其曼哈顿距离,求使所有点连通的最小代价。 朴素的算法可以用O(N2)的Prim,或者处理出所有边做Kruskal,但在这里总边数有O(N2)条,所以 阅读全文
posted @ 2017-12-28 21:55 范仁义 阅读(1677) 评论(0) 推荐(1) 编辑
摘要: 莫队算法(区间处理) 0x00 概论 莫队算法主要是用于离线解决 通常不带修改只有查询的一类区间问题。 以前遇到区间问题的时候一般都是用线段树解决,当然能用线段树解决的问题也在多数。线段树的主要思路就是通过一个左半拉序列 和一个右半拉序列 来维护它们的父亲(也就是两条序列接合在一起的完整序列),通过 阅读全文
posted @ 2017-12-28 21:42 范仁义 阅读(438) 评论(0) 推荐(0) 编辑
摘要: lower_bound lower_bound()返回一个 iterator 它指向在[first,last)标记的有序序列中可以插入value,而不会破坏容器顺序的第一个位置,而这个位置标记了一个不小于value 的值[1] 。该函数为C++ STL内的函数。 lower_bound()返回一个 阅读全文
posted @ 2017-12-28 21:32 范仁义 阅读(326) 评论(0) 推荐(0) 编辑
摘要: CDOJ 1330 柱爷与远古法阵(高斯消元) 柱爷与远古法阵 柱爷与远古法阵 Time Limit: 125/125MS (Java/Others) Memory Limit: 240000/240000KB (Java/Others) Submit Status 众所周知,柱爷的数学非常好,尤其 阅读全文
posted @ 2017-12-28 18:45 范仁义 阅读(353) 评论(1) 推荐(0) 编辑
摘要: unique(V.begin(),V.end()) 重排容器算法:sort,unique unique 返回指向不重复区域之后一个位置的迭代器 阅读全文
posted @ 2017-12-28 18:42 范仁义 阅读(1259) 评论(0) 推荐(0) 编辑
摘要: 将一组数从小到大排列并且剔除重复项(离散化) 这个功能涉及到一个数据结构(vector)和三个函数: 1:sort,将这组数字从小到大排列; 2:unique,将相邻且重复的数放到vector的尾部,然后返回指向第一个重复元素的迭代器(需要注意的是,被放在尾部的数据有时会产生变化,所以不能继续使用了 阅读全文
posted @ 2017-12-28 18:33 范仁义 阅读(556) 评论(0) 推荐(0) 编辑
摘要: poj 2104 K-th Number(主席树) 主席树就是持久化的线段树,添加的时候,每更新了一个节点的线段树都被保存下来了。 查询区间[L,R]操作的时候,只需要用第R棵树减去第L-1棵树就是区间[L,R]中增加的元素对应的树,然后查询这棵两棵树的差值对应的树就可以达到我们的目的。 每增加一个 阅读全文
posted @ 2017-12-28 15:16 范仁义 阅读(305) 评论(0) 推荐(0) 编辑
摘要: P3373 【模板】线段树 2 相对于线段树模板1有了区间乘的操作,所以增加了一个乘的延迟标记,当加和乘的次序不同的时候,我们要好好考虑这两个延迟标记对孩子的影响。所以这里我们是采取的是先乘后加。 线段树里面也要分清楚是延迟标记依赖就更新自己的值还是把延迟标记传递给孩子的时候才更新自己的值。 题目描 阅读全文
posted @ 2017-12-28 12:03 范仁义 阅读(1125) 评论(0) 推荐(1) 编辑
摘要: P3372 【模板】线段树 1 这个题目相对我们平时做的简单的线段树的题目(区间加,求最值)而言,这里是(区间加,求和),所以父亲节点延迟标记下传的时候父亲节点的值的增量要乘上孩子数,因为求最值的情况,整个区间同加最值不会改变。 t[id].s += (t[id].right - t[id].lef 阅读全文
posted @ 2017-12-28 10:47 范仁义 阅读(442) 评论(0) 推荐(0) 编辑
摘要: 线段树总结 一、所有线段树的操作都是为了补全那颗树,所以心中有那棵树的图像就知道要进行那些操作。 二、各个操作里面的具体步骤 1、建树操作 2、标记下传操作 3、更新操作 更新操作有点像查询操作的一种,因为先找到位置了才能更新 不管以什么样的形势修改孩子之后,肯定都要更新父亲,线段树如此,分块如此, 阅读全文
posted @ 2017-12-28 10:39 范仁义 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 浮点数表示法 #include <bits/stdc++.h>using namespace std;const int maxn = 1e5+7;int belong[maxn], num, l[maxn], r[maxn]; 和 #include <bits/stdc++.h>#define M 阅读全文
posted @ 2017-12-28 09:20 范仁义 阅读(646) 评论(0) 推荐(0) 编辑
摘要: 线段树空间究竟得开多大 线段树有两种储存,堆式存储和链式存储。 如果是堆式存储(i*2、i*2+1),则要开到 2*大于等于n的第一个2的整数次幂,如200000要开524288,30w要开1048576。如果是记录左右儿子,开2*n-1即可。 4-5就够了,再高还re就不是开的不够大的问题了 我们 阅读全文
posted @ 2017-12-28 08:51 范仁义 阅读(1010) 评论(0) 推荐(0) 编辑