【Vijos】lxhgww的奇思妙想】的更多相关文章

题目链接 https://blog.bill.moe/long-chain-subdivision-notes/ http://www.cnblogs.com/zzqsblog/p/6700133.html 长链剖分模板. 6,7,8,20个点RE,没什么办法了..(迷) #include <cstdio> #include <cctype> #include <vector> #include <algorithm> #define gc() getcha…
传送门 长链剖分模板题. 题意简述:允许O(nlogn)O(nlog_n)O(nlogn​)预处理,让你支持O(1)O(1)O(1)查找任意一个点的kkk级祖先. 思路:因为要O(1)O(1)O(1)求,因此需要用到长链剖分的一些性质. 所谓长链剖分是类比重链剖分的一种划分树的方式,我们考虑将整棵树用若干条极长链拼接起来就是长链剖分. 那么它有如下几个几个性质: 所有长链的长度之和为O(n)O(n)O(n) 一个节点的kkk级祖先所在的长链的长度至少为kkk 可以根据长链剖分的定义想 然后这题就…
题意 题目链接 Sol 长链剖分 又是一个用各种花式技巧优化的暴力 它的主要思想是:对于每个节点,把深度最深的子节点当做重儿子,它们之间的边当做重边 这样就会有一些非常好的轻质 所有链长总和是\(O(n)\)级别的 任意一个点的\(k\)级祖先的子树深度\(\geqslant k\) 首先我们维护出每一个重链头向上\(len[i]\)个节点是什么,沿着重链走向下\(len[i]\)个节点是什么 \(len[i]\)表示该节点所在重链的长度 同时预处理出找祖先的倍增数组 每次询问的时候,首先找到\…
给出一棵树求K级祖先.O(N*logN+Q) 更详细的讲解见:https://www.cnblogs.com/cjyyb/p/9479258.html /* 要求k级祖先,我们可以把k拆成"2^highbit(x)+tmp 形式 (highbit(x)为x在二进制位下的最高位),然后用倍增的方法把highbit(x)的部分跳了 剩下tmp的同样可以预处理掉,这样预处理就是O(n*logn)的效率, 所以对于每个询问就是O(1)回答,这样的效率就是O(n*logn+q). 于是就考虑用长链剖分.…
题面 给定一棵树,每次询问一个点的\(k\)次祖先,强制在线. Vijos 题解 长链剖分. 链接暂时咕咕咕了. 现在可以戳链接看题解了 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #include<vector> using namespace std…
题面 题解 求$k$级祖先孙子 为什么要用长链剖分啊??? 倍增并没有慢多少... 其实是我不会 长链剖分做这道题还是看这位巨佬的吧. 代码 #include<bits/stdc++.h> #define RG register #define file(x) freopen(#x".in", "r", stdin);freopen(#x".out", "w", stdout); #define clear(x,…
传送门 长链剖分的板子(又是乱搞优化暴力) 对于每一个点,我们定义它深度最深的子节点为它的重儿子(为什么不叫长儿子……),他们之间的连边为重边 然后长链剖分有几个性质 1.总链长为$O(n)$ 2.一个节点的$k$级祖先的子树深度必定大于等于当前节点的子树深度 以上两点稍微yy一下就能发现是对的 然后回到这道题.我们设$len[u]$为这一条长链的长度,对于每一个长链的顶点,我们维护它的1到$len[u]$级儿子以及1到$len[u]$级祖先 同时预处理找祖先的倍增数组,并预处理出1到$n$的每…
https://vijos.org/d/Bashu_OIers/p/5a79a3e1d3d8a103be7e2b81 求k级祖先,预处理nlogn,查询o1 //#pragma GCC optimize(2) //#pragma GCC optimize(3) //#pragma GCC optimize(4) //#pragma GCC optimize("unroll-loops") //#pragma comment(linker, "/stack:200000000&…
倍增离线,预处理出爹和孙子们.查询\(O(1)\) #include <cstdio> #include <cstring> #include <numeric> #include <cmath> #include <algorithm> #include <iostream> #define R(a,b,c) for(register int a = (b); a <= (c); ++a) #define nR(a,b,c)…
Preface 菜鸡HL终于狗来了他的省选停课,这次的时间很长,暂定停到一试结束,不过有机会二试的话还是可以搞到4月了 这段时间的学习就变得量大而且杂了,一般以刷薄弱的知识点和补一些新的奇怪技巧为主. 偶尔也会打一些比赛找找手感(比如HHHOJ的比赛,Luogu比赛,以及comet OJ上之前的CCPC题) CF和CC看情况,主要是我真的不太喜欢读英文题的恐怖感觉233 希望这段时间的努力可以让我不跪省选吧 2-26 早上晨跑完了就和杨浩讲了停课的事,不出意外地很轻松就通过了. 然后回班拿了点东…