随笔分类 - 数据结构
摘要:链接 https://loj.ac/problem/2718 思路 我们希望x所在的连通块尽量的大,而且尽量走高处 离线的话可以询问排序,kruskal过程中更新答案 在线就要用kruskal重构树 这kruskal重构树的话,看图就明白了 叶子节点都是原树节点 非叶子节点都是边 按照从大到小的顺序
阅读全文
摘要:链接 https://codeforces.com/contest/213/problem/E 题目大意 给出两个排列a、b,长度分别为n、m,你需要计算有多少个x,使 得$a_1 + x; a_2 + x; a_3 + x、、、 a_n + x$ 是b 的 子序列 (不连续的那种)。 思路 巧妙啊
阅读全文
摘要:题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=3653 https://www.luogu.org/problemnew/show/P3899 思路 三个点肯定在1到c的链上 a已经确定 1.b是a的祖先,答案就是(siz[u] 1) m
阅读全文
摘要:[TOC] 链接 https://www.luogu.org/problemnew/show/P4137 思路 做了好几次,每次都得想一会,再记录一下 可持久化权值线段树 区间出现存最小的下标 然后线段树上二分 如果左边min L 那就去右边 因为左边都被【L,R】占满了 虽然比卡常的莫队慢好多(7
阅读全文
摘要:链接 https://vjudge.net/problem/SPOJ COT2 https://www.luogu.org/problemnew/show/SP10707 思路 dfs欧拉序转化为普通莫队(并不算树上莫队,不过也可做) 好神仙啊,原来欧拉序是可以求任意两点的点,不过要加lca。 代码
阅读全文
摘要:题目 https://loj.ac/problem/2005 思路 $$ \sum_{L}^{R}{(x_i x)^{2}} $$ $$ \sum_{L}^{R}{(x_i^2 2 x_i x+x^{2})} $$ $$ \sum_{L}^{R}{x_i^2} 2 x \sum_{L}^{R}x_i
阅读全文
摘要:昨天写了一晚,越写复杂度越感觉不对,早上一想果然是假的。 (这里n,m,k我就不区分了) 首先一个城市的询问可以很容易的二分 check用树状数组维护区间(区间修改,单点查询的那种) 一次是$O(nlog^2n)$ n次就是$O(n^2log^2n)$ 但是我们check的时候都是树状数组维护,询问
阅读全文
摘要:链接 https://www.lydsy.com/JudgeOnline/problem.php?id=3545 离线询问,按照权值排个序 就是在克鲁斯卡尔时候维护个treap,到时候挨个查询一下就好了 nb的gzy说要要在线才是呢,nb 代码 cpp / Problem: 3545 User: g
阅读全文
摘要:链接 https://www.luogu.org/problemnew/show/P1552 思路 忍者数量肯定越多越好 那就从下到上的合并它的孩子 左偏树的话 顺便维护一个tot,大头堆,如果tot大于了m,把大的删掉 如果左偏树忘干净了或者没学的话 线段树合并也是个不错的选择 直接权值线段树合并
阅读全文
摘要:链接 https://www.lydsy.com/JudgeOnline/problem.php?id=3262 思路 CDQ版本稍后再说 二维偏序排序用树状数组求就可以 而三维之后就不可以了,但我们可以在BIT上维护一个功能强大的treap 维护多出来的一维c BIT套treap a排序 BIT维
阅读全文
摘要:链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1251 思路 好简单的模板题 不过还是wrong了好几发 叶子节点要注意下,不能使用 遇到就不管 写的fhq treap,OI中常数最大的平衡树,中间还T了一发 代码 cpp include i
阅读全文
摘要:[TOC] 链接 https://www.luogu.org/problemnew/show/P4069 思路 树剖+超哥线段树 我已经自毙了,自闭了!!!! update 上次抄了没认真看,这次考试又自毙了 是一个细节的处理上一次没处理 代码 cpp include define ll long
阅读全文
摘要:题目链接 https://ac.nowcoder.com/acm/contest/368/F 思路 询问可以离线。 然后每个节点上建32个权值线段树(权值不大,其实只要20颗) 记录每一位权值为x(如果是根节点的话)的01和 然后从根节点向上合并。 访问到需要访问的就查询。 大体这样,不过细节和处理
阅读全文
摘要:链接 https://www.luogu.org/problemnew/show/P4097 https://www.lydsy.com/JudgeOnline/problem.php?id=3165 思路 还是模板超哥线段树 注意没有斜率的时候 还有貌似卡精度了,long doule不行,需要ep
阅读全文
摘要:题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1568 https://www.luogu.org/problemnew/show/P4254 思路 超哥线段树模板题 若当前线段完全高于标记线段,则将当前线段进行标记 若当前线段完全低于标
阅读全文
摘要:P3690 【模板】Link Cut Tree (动态树) 思路 "candy" 不是太掌握 也落落不太清楚 自己学习吧 ~~lmc讲的时候睡着了~~ cpp include define ls c[x][0] define rs c[x][1] const int N=300009; using
阅读全文
摘要:P2147 [SDOI2008]洞穴勘测 思路 没办法,我就是喜欢板子都想发的人 都是基础操作,不多说了 代码 cpp include define ls ch[x][0] define rs ch[x][1] define FOR(i,a,b) for(int i=a;i'9'||s='0'&&s
阅读全文
摘要:P3203 [HNOI2010]弹飞绵羊 思路 每个点都往后面连边 所以肯定没有环 超过n的算连向n+1 n+1个点,n条边,没有环,一定联通 那就差不多是个树了 然后就LCT模拟他的操作就行 有比较简单的LCT做法,不过我还是喜欢无脑一点的 错误 cut操作x写错i 代码
阅读全文
摘要:P4172 [WC2006]水管局长 前言 luogu数据太小 去bzoj,他的数据大一些 思路 正着删不好维护 那就倒着加,没了 LCT维护他的最小生成树MST 树上加一条边肯定会有一个环 看看环上最大值和加边的大小 然后选择加不加,改不改 错误 哇,恶心撒 怼着题解都写不出来 最后乱改了一下就A
阅读全文
摘要:P3979 遥远的国度 思路 一开始我用这个函数得到左端点 发现是错误的 无奈数据太水,还90,bzoj也错了一个点 debug了一上午 到现在我也不知道哪里错了,各路好汉看看吧 也许是我没用dfs序的性质吧 x的儿子点一定在x的子树范围内child[x] child[x]+siz[child[x]
阅读全文