倍增法,每次排2^j长度的段,转移就是双关键字排序就好啦! 求height可以利用height[rank[i]]>=height[rank[i-1]]-1的性质,当然证明考虑构造,并反证,假设在其中插入元素使性质不成立,推矛盾就可以了。 基本上是从网上抄来的模板啦,解释一下代码吧~ x在交换之前充当 ...
分类:
编程语言 时间:
2019-06-12 01:05:05
阅读次数:
101
用并查集合并相同的点,答案为9 10^{并查集的块数 1}。 由“区间对区间的”可以联想到线段树优化之类的方法,换成倍增会更简单~ ~~~cpp include define ll long long using namespace std; const int N=1e5+10; const in ...
分类:
其他好文 时间:
2019-06-10 13:22:37
阅读次数:
66
由于马上要考电路了,而且学物联网就很烦,不知道到底要主攻哪个方向比较好,乱七八糟。 先给出几篇宝藏博客,之后的有时间再补上 https://blog.csdn.net/wangwangbu/article/details/51453084 https://www.cnblogs.com/yyf030 ...
分类:
其他好文 时间:
2019-06-08 13:26:07
阅读次数:
84
题意:给出$n$个形如$[l,r]$的线段。$m$次询问,每次询问区间$[x,y]$,问至少选出几条线段,使得区间$[x,y]$的任何一个部位都被至少一条线段覆盖。 首先有一个显然的贪心,设询问区间为$[l,r]$,则所取的区间最靠左的一个的左端点必定小于等于$l$,并且要使这个区间尽可能地向右延伸 ...
分类:
其他好文 时间:
2019-06-07 21:23:14
阅读次数:
187
题意:给你n个区间和m次询问,每次询问一个区间[l, r]至少需要几个区间覆盖? 思路:如果只有一个区间,并且区间是整个取值范围的话,这是一个经典的区间覆盖问题,我们都知道贪心可以解决。现在我们需要快速知道对于一个指定区间至少需要多少个区间来覆盖。我们有一个初步想法,我们可以预处理出包含某一个点的区 ...
分类:
其他好文 时间:
2019-06-06 19:17:55
阅读次数:
73
P1967 货车运输最大生成树+倍增算路径最小值 最大生成树就是kruskal时将边改为降序 然后就和普通kruskal一样 然后就是用的LCA倍增模板中说的其它骚操作一样 可以在预处理的时候还可以顺便记录下这段路径的权值最大值 最小值或者权值和之类的信息,这样就可以在O(logn)的时间内求出树上 ...
分类:
其他好文 时间:
2019-06-01 19:22:27
阅读次数:
86
三要素: 1. 阶段, 2. 状态,决策和转移方程 3.边界和答案 线性DP 背包 区间DP 树形DP 环形DP 状态压缩DP 倍增优化DP 数据结构优化DP 单调队列优化DP 斜率优化DP 四边形不等式优化DP 计数类DP 数位统计类DP ...
分类:
其他好文 时间:
2019-06-01 15:18:44
阅读次数:
93
Best Edge Weight 我们先找出一棵最小生成树, 对于非树边来说, 答案就是两点路径上的最大值 - 1, 这个直接倍增就能处理。 对于树边来说, 就是非树边的路径经过这条边的最小值 - 1, 这个可以用并查集压缩路径 或者 更压st表一样的方式更新。 感觉就是没想到先扣出来一个最小生成树 ...
分类:
其他好文 时间:
2019-05-31 20:01:04
阅读次数:
141
https://www.luogu.org/problemnew/show/P3379 知识点:1.倍增,2 << i ...
分类:
其他好文 时间:
2019-05-24 22:34:05
阅读次数:
126
BaoBao has just found a rooted tree with n vertices and (n-1) weighted edges in his backyard. Among the vertices, m of them are red, while the others ...
分类:
其他好文 时间:
2019-05-21 00:12:38
阅读次数:
130