算法步骤 时间复杂度 $O((n+q)\log n)$,$n$是问题规模,$q$是询问个数 倍增法求$LCA$ $fa[i,j]$表示从$i$开始向上走$2^j$所能到达的节点 $(0 \leq j\leq\log n)$ $depth[i]$表示节点$i$的深度 哨兵:如果从$i$开始跳$2^j$ ...
分类:
其他好文 时间:
2020-03-29 21:26:30
阅读次数:
76
https://codeforces.com/contest/1328/problem/E 题目所描述的是一棵树,题中已明示1为root结点。 题目可以转化为,是否存在一条路径,满足集合中的k个点到路径的距离小于等于1? 思路: 1.首先倍增离线预处理出结点深度,便于后续在线询问LCA 2.对于每次 ...
分类:
其他好文 时间:
2020-03-29 01:40:42
阅读次数:
93
题意: 给出一个串 $S$,再给出 $n$ 个串 $T_i$, $q$ 次询问 $S[pl,pr]$ 在 $ T_{[l,r]}$哪个串出现次数最多。 solution: 不难想到我们找 $S[pl,pr]$ 是可以记录 $ed_{pr}$ 然后倍增上去找到这个区间所对应的 SAM 节点。 我们把 ...
分类:
其他好文 时间:
2020-03-23 00:03:32
阅读次数:
68
题意: 一棵无向树,输入点数和操作数,下面一行n个值代表每个点的权。下面n-1行是树边 操作分为 0 x w ,表示把点x的权改为w; k a b , 求出,从a到b的路径中,第k大的点权 题解: 对于每组询问,先求出两点的LCA,再从两点分别向LCA遍历,保存路径上所有的点权,排序输出第K大即可~ ...
分类:
编程语言 时间:
2020-03-19 22:03:47
阅读次数:
78
题意: 第一次世界大战后,许多城市遭到严重破坏,我们需要重建这些城市。但是,某些材料只能在某些地方生产。所以我们需要将这些材料从一个城市运到另一个城市。由于战争期间大部分道路已被完全摧毁,两个城市之间可能没有路径,也没有环存在。 现在,你的任务来了。在告诉您道路状况后,我们想知道任何两个城市之间是否 ...
分类:
编程语言 时间:
2020-03-19 20:11:31
阅读次数:
80
https://www.cnblogs.com/lbssxz/p/11114819.html 1 #include<cstdio> 2 #include<iostream> 3 using namespace std; 4 const int maxn=1e5+10; 5 int n,m,s,num ...
分类:
其他好文 时间:
2020-03-13 13:16:19
阅读次数:
44
1) 递推的时候,如果状态空间很大线性递推无法满足时间和空间复杂度的要求,可以通过成倍增长的方式。2) 二进制划分来进行递推,任意整数可以表示成若干个2的次幂项的和,使用求出的代表值拼成需要的3) 递推求解的问题的状态空间必须关于2的次幂具有划分性 经典问题模型:长度为n的序列,m次询问,每次给定一 ...
分类:
其他好文 时间:
2020-03-07 09:33:08
阅读次数:
88
线性基是极小的能异或出任意元素异或出来的值的集合. 线性基可以合并,不是很可以支持删除,但看过相关的博客好像有神仙可以. 删除可以弄存活区间然后线段树. 设线性基中有i个元素,那么共有$2^i$种异或值,每种值出现了$2^{n i}$次. 异或值最大就从高位往低位贪心选取,如果当前答案没有这一位就异 ...
分类:
其他好文 时间:
2020-02-24 20:15:11
阅读次数:
68
A. 不然想到一个50分的dp,然而我的dp转移和正解不一样所以没法优化所以就死了。。要是用我的dp推正解大概只能考虑实际含义。 考虑每次在已有的颜色序列中间插入一段,那么考虑转移的方案数,不难得到一条dp转移路径的贡献是每次颜色序列长度+1的乘积。 所以枚举一共经过了多少次转移,转移次数为k的所有 ...
分类:
其他好文 时间:
2020-02-21 22:35:30
阅读次数:
65
蛤的旅行 [题目描述] 长江的江心有n块石头。为了简化问题,我们把长江看做一条数轴,且所有石头的坐标均为正整数。 有一只蛤在这些石头上跳。这只蛤在长江中生活了数百年,多年与风浪搏斗的经验使他锻炼出了极强的跳跃能力,可以瞬间从一块石头跳到与其相距任意远的另一块石头上。 然而,在一次意外进入一片诡异的灌 ...
分类:
其他好文 时间:
2020-02-21 22:01:39
阅读次数:
86