-------------数据结构----------
gigo_64
莫看,莫看,这不是真实的我(七海脸)
溜了溜了
展开
-
普通平衡树的各种写法(更新中)
受fsy启发,发现这道题真是个锻炼数据结构和STL的好东西。解法1:权值线段树离散化后(注意4操作不能离散化),操作如下:插入,删除,查size,线段树上二分,查最大,查最小。都是基本操作。#include<bits/stdc++.h>using namespace std;#define in read()int in{ int cnt=0,f=1;ch...原创 2019-10-25 09:52:34 · 338 阅读 · 0 评论 -
蒟蒻分块
蒟蒻在刘巨佬的强烈安利下,终于学习了最弱版本的分块。这个算法比我想的要暴力很多啊。所谓分块,就是把一串要处理的数列分成一块一块的。然后区间处理的时候,范围大于一个块的就区间修改整体修改,否则就暴力遍历。也就是说每次修改的部分实际上是 左边-块-块-块……块-块-块-右边。左边右边暴力遍历。分块是一个很宏远的算法,以至于它没有太多基本套路。不过如何分块是我们要说一下的。这关乎...原创 2018-12-11 22:25:06 · 161 阅读 · 0 评论 -
【洛谷p2801】教主的魔法【分块模板】
给出一个数列,支持区间修改,区间查询大于等于key的值个数,分块模板加一个小二分。详情见代码。A指查询(L到R大于x),M指修改(将L到R增加x)#include<bits/stdc++.h>#define in in()using namespace std;int in{ int cnt=0,f=1; char ch=0; while(!isdigit(ch))...原创 2018-12-11 22:38:45 · 189 阅读 · 0 评论 -
【TJOI2018】数学计算【线段树】
长点儿见识,,咕咕咕一开始很蒙蔽啊这题怎么做啊高精吗卧槽我不会救命啊然后再一想,我先把数存下来。然后再一想,把这个数删了等于*x/x=1然后再一想,我需要一个动态更新维护全局的数据结构。那是啥呢那是线段树啊所以如果存在就是这个数,不存在就是1,辣鸡单点修改,连单点查询都不用写直接查根。3min写完感觉手速又提高了呢ouo#include<bits/stdc+...原创 2019-10-04 16:50:01 · 111 阅读 · 2 评论 -
【bzoj3682】phorni【后缀平衡树】
看,黑暗bzoj网站!FSY的代码真tm好读,比zxy的好看多了,赏心悦目的一匹。支持前端添加字符,维护所有后缀的排名信息。我们使用后缀平衡树。如果直接二哈的话,复杂度会死掉,所以使用nb的后缀平衡树。后缀平衡树每个节点对应一个后缀。给每个节点一个我们定义的权值来比较相对大小。这个自定义权值实现长得像线段树。每个节点给一个左右权值。该点权值为左右权值的平均数。左...原创 2019-10-06 09:15:25 · 156 阅读 · 2 评论 -
线段树合并
有时候不得不合并两个形态不一定完全相同(因为动态开点)的线段树,往往是权值线段树。我们可以直接merge起来。大体跟可并堆的或者非旋treap的节奏差不多。如果某个子树不存在该节点直接返回,存在logn递归。为什么动态开点呢。因为很显然,如果两个线段树结构相同,那复杂度还是O(n)。所以结构越混乱,复杂度越低。事实上,复杂度均摊nlogn。bzoj4756奶牛qwq#in...原创 2019-10-09 19:06:18 · 80 阅读 · 0 评论 -
哈希表与BSGS与exBSGS
使用递归学习法。哈希表是一个数据结构,在哈希的基础上用一个链表(我喜欢邻接表)把对某个数取模相同的东西放在一个起始节点下。复杂度期望在1左右,或者很小的常数。给a,b,质数p,求解先讨论特殊情况。如果a modp==0,无解。如果b%p==1,那x=0就行了。而大多数情况。首先因为p是质数,那如果x是一个解,则x%p也是一个解。所以我们只需要管0<...原创 2019-10-10 14:38:27 · 169 阅读 · 0 评论 -
【GXOI\GZOI2019】旧词【差分】【树剖】
嗯,,这道题和上道题一样的上道题是这道题的递归题。如果明白上道题的处理方式,这道题就差不多了 。唯一的难点在于k次方,如何维护?如果我们仍然将1到某个点权值都+1,还要满足这对该点子树贡献是该点深度的k次方。我们可以继续使用差分思想。将第i个点赋一个加权权值为其深度的k次方减去(该点深度-1)的k次方。然后就可以继续快乐的维护了。#include<bits/st...原创 2019-10-10 19:25:13 · 76 阅读 · 0 评论