数据结构
spnooyseed
冲破大学的束缚,内心与实力并肩高升
展开
-
小V和gcd树
树剖做法:先预处理出来轻重链,然后当修改某一个点的时候,只需要修改同一条链中与当前点相关的边(红色边), 而那些黑色边不需要维护,只需要查询的时候暴力搞一下就好了。这也就是维护当前点和重儿子点的做法。树链剖分#include <iostream>#include <cstdio>#include <algorithm>#include <unordered_map>#include <vector>#include <map.原创 2020-05-20 21:39:26 · 828 阅读 · 0 评论 -
Tree
hdu 4757树链剖分 + 可持久化trie树到现在才有点大彻大悟,可持久化trie的作用就是可以查询到历史版本, 那么既然可以,最最暴力的做法,就是每一个点都建立一个新的,这个新的版本既包含旧版本, 也包含最新的结点, 但是空间复杂度实在是不敢恭维, 故大佬们想的做法就是在暴力的基础上进行修改, 每个点依旧建立新版本, 但是只建立之前旧版本没有的东西, 然后再把旧版本和这个空间占用上面很小...原创 2019-11-02 22:36:33 · 92 阅读 · 0 评论 -
可持久化trie树
基本思想 :可以发现,如果裸着建,不仅要消耗很多的时间,更是要消耗很多的空间。考虑以i为根的字典树和以(i-1)为跟的字典树的异同。可以发现,在当前以i为根的字典树上减去a[i],就是(i-1)的字典树了。所以,我们可以将除了a[i]之外的结点都连到(i-1)的树上。当然,i-1的树也是从i-2的树上引用过来的。这样之后,会出现一个问题。比如,a[i-1]的值与a[i]的值相同,那么我们到...原创 2019-11-02 12:33:16 · 131 阅读 · 0 评论 -
Splay平衡树
__以前认为平衡树一点也不好理解,可是学了之后发现还可以,就是代码有点多,但是功能真的是很强大, __学习来源以普通平衡树为例这个splay最重要的是一个splay, 直接将某个点转到根节点, 如果想进行一些操作, 可以直接在上面操作了,#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 10 ;...原创 2019-10-29 17:15:26 · 133 阅读 · 0 评论 -
分块初学
刷题记录分类题目最短路1860$12导管$1原创 2019-10-24 18:04:05 · 142 阅读 · 0 评论 -
问题B : 绝地求生 珂朵莉树
题目描述吃鸡开局了,你降落的森林中有一条长度为S的小路(编号从1到S),且在小路上时常会起雾,你手上的激光发射器可以让雾消散。你肯定你所在位置的视野。若位置x有浓雾,则位置x的视野为0。若从x一直到S或从x一直到1全都没有浓雾,则视野为INF。其他情况下,位置x的视野定义为max{R-L-1},其中L,R满足:,x0格子没有浓雾。具体来说,会有以下事件发生:1、“1 L R”小路的[L,R...原创 2019-09-28 21:36:44 · 161 阅读 · 0 评论 -
最敏捷的机器人A // RMQ
RMQ模板题, 之前一直觉得ST表都很难很难的,但是如今一看,也是很简单的,可能直到如今才遇到详细的博客#include <iostream>#include <cstdio>using namespace std;const int N = 1e5 + 10 ;int a[N] ;int f[N][20] , s[N][20] , logg[N] ;int ...原创 2019-09-28 22:10:26 · 124 阅读 · 0 评论