数据结构--树链剖分
长沙大学ccsu_deer
这个作者很懒,什么都没留下…
展开
-
牛客挑战赛40-E.小V和gcd树(树链剖分+树状数组+动态开点线段树 )
题目链接 题意: 前言: 时间给的有点多,8秒,其实正解1秒足够,8秒导致很多人只用了树链剖分O(1)修改 暴力查询都能过。 更好的解法是树上树套树(学习别人代码的) 时间复杂度O(Nlog^3N) 自己想到的做法是树上动态主席树,发现有点难实现(树状数组维护dfs序,线段树维护权值 )发现不好做, 因为树上的节点并不是连续的,树状数组更新的时候dfs序又是连续的,可能会导致左儿子的点更新到右儿子的线段树上面去了。 看了别人的代码没想到还可以反过来(树状数组维护权值,线段树维护..原创 2020-05-22 15:29:08 · 576 阅读 · 0 评论 -
树链剖分模板
树剖例题 然后发现可以替代LCA中查询两点距离,特意来保存下代码模板 我代码中qulen函数 就是查询两点间的距离。 学习博客 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=2e5+10; vector<int>G[N]; int a[N]; int s...原创 2020-03-01 15:16:59 · 271 阅读 · 0 评论 -
牛客练习赛58(C D(BFS)E(因数分解)F(树剖+线段树))
题目链接 C-矩阵消除游戏 做法:水题,如果k>=min(n,m) 就是矩阵所有的和 k<=min(n,m)时就是dfs 二进制选取行 然后列 通过排序获得剩余的前k大个。 贪心有wa点,有个不错的数据在我代码最下方 #include<bits/stdc++.h> #define rep(i,a,b) for(int i=a;i<=(b);++i) #...原创 2020-02-29 12:10:49 · 520 阅读 · 1 评论