
数据结构
Moon1125666900
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
树套树 bzoj3110&&bzoj3295
3110 :值域套线段树,相当于每个一位节点代表一个值域,对应一颗线段树…… 代码:http://paste.ubuntu.com/24922438/3295:正着看是删除,倒过来就是插入了……每次查询前面多少个大于当前值,查询后面多少个小于当前值,累加即可。然后愉快MLE…… 代码:http://paste.ubuntu.com/24922418/原创 2017-06-22 12:26:40 · 302 阅读 · 0 评论 -
后缀数组 炒鸡好写版
运用STL自带的sort排序,双关键字压成一个long long,常数很小的Nlog2NNlog^2N//#include <bits/stdc++.h>#include <cstdio>#include <algorithm>#include <iostream>#include <cstring>#include <limits>#include <map>#include <ve原创 2018-04-28 08:19:33 · 201 阅读 · 0 评论 -
2018省选训练29 A
http://www.gdfzoj.com/oj/contest/375/problems/1 线段树妙题,题意是给定一个数列,操作有区间与/或一个值,和查询区间最大值。 维护一个same表示,区间内的数哪些位是全部相同的,以及bit,表示相同的是什么,修改操作本质是将一个区间某些位强制赋为1/0,如果修改的位是当前区间same的子集,直接用一些奇奇gaygay的位运算,最后发现,相当于区间加原创 2018-04-26 07:49:54 · 289 阅读 · 0 评论 -
线段树优化建图
由于GDOI2018day3T1考了这个知识点,然而我不会QAQ……所以补一下…… 主要思想就是假如有n个点向长度为M的区间连边,直接连的话边数是N*M的,然而可以开一个虚拟节点X,n个点向X连边,X再向区间连边,区间可以用线段树来优化~~~洛谷 https://www.luogu.org/problemnew/show/P3588 新开一个X,K个点向X连边,X再向K个点切成的K个区间连边。H原创 2018-05-03 12:46:31 · 1097 阅读 · 0 评论 -
树链剖分模板 1036: [ZJOI2008]树的统计Count
#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#define inf 0x7fffffff#define N 30005 #define M 60005using namespace std;int n,q,cnt,sz;int v[N],de...原创 2018-03-31 08:43:41 · 244 阅读 · 0 评论 -
Problem 1049: Lost My Music【可持久化栈+倍增】
首先要求的式子是一个斜率的相反数,其实就是求斜率的最大值,那么我们只需维护一个下凸包即可, 考虑到直接用栈来存,如果是在一条链上的话可以保证每个数只会被插入弹出一次,直接做,暴力退栈就行了。 然而在树上暴力退的话会被卡成O(N2N^2)…… 所以对于每个点存一个倍增数组,记录其在凸壳里的祖先,然后乱搞即可…… 代码://#include <bits/stdc++.h>#include <c原创 2017-11-30 11:25:37 · 507 阅读 · 0 评论 -
后缀数组(修订版)
今天在码一道后缀数组+二分答案时,调了一个上午,发现后缀数组出了问题,这就像最信任的人给了泥最致命的一刀QAQ~~~原来蓝书上的板子是有问题的,因为若以0为下标,由于初始值是0,在重新计算x数组时,会造成越界,原本越界的字符串(空字符串)应该当做最小的(-1???)来比较,而这样会造成错误。hack数据: cbcbc 若用蓝书上的板子,sa数组为 实际上应该为 要完善程序,只需加上一原创 2017-03-04 12:59:18 · 412 阅读 · 0 评论 -
AC自动机
简单来说就是Trie+KMP,用了一天时间学并码了出来…… #include <cstdio>#include <cstring>#define maxn 1000000+5int T,n,val[maxn],ch[maxn][26],sz,fail[maxn],h,t,q[maxn];char s[55],st[maxn];void insert(char *s)//相当于Trie {原创 2017-02-01 10:24:25 · 348 阅读 · 0 评论 -
后缀数组
后缀数组是处理字符串的有力工具。后缀数组是后缀树的一个非常精巧的替代品,它比后缀树容易编程实现,能够实现后缀树的很多功能而时间复杂度也并不逊色,而且它比后缀树所占用的内存空间小很多。可以说,在信息学竞赛中后缀数组比后缀树要更为实用。(以上内容摘自度娘~~~) 不久前写过后缀数组,今天来复习一下……#include <cstdio>#include <algorithm>#include <io原创 2017-02-01 18:20:39 · 391 阅读 · 0 评论 -
主席树
对于一个数列,有N个数,Q个询问,每次询问【l,r】间第k大。 第一眼想法如果只有一个询问,直接把【l,r】间的数插入值域线段树再查询即可。 第二眼想法,套个莫队就吼了,O(M∗N−−√∗logN)M*\sqrt N*logN),愉快T…… 第三眼想法,把每个前缀插入线段树后的状态记录下来,然后相减。貌似要开N棵树的样子,会炸空间。 然后问题就是如何优化空间,这种方法存在吗?答案是肯定的……原创 2017-08-23 08:38:53 · 298 阅读 · 0 评论 -
莫队算法
ORZ莫涛神犇…… 莫队算法事实上是一种神奇的暴力,对于离线的区间问题求解起着神奇的作用……只要满足在区间[L,R]得到答案的基础上,可以进一步推出[L,R-1]和[L,R+1]和[L-1,R]和[L+1,R]的答案的性质即可。 算法流程大概为用分块的思想,将询问区间左端点按所在块的编号为第一关键字,右端点编号为第二关键字排序,求解时暴力维护即可。时间复杂度为O(n∗n√)O(n*\sqrt{n原创 2017-06-24 00:29:30 · 358 阅读 · 0 评论 -
splay练习
splay基本操作: lr(x) maintain(x): 维护x信息 rotate(x) 将x旋转至父亲节点 pushdown(x) 下传标记 remove(x,y) 清除x至y的标记 splay(x,y) 将x旋转至y下(splay之前要remove一下) k_th(x) 将第x个数旋...原创 2017-06-22 20:19:11 · 620 阅读 · 0 评论 -
双tag线段树
今天早上找了一道比较综合的线段树(http://codevs.cn/problem/4927/),虽然题目很水,但是作为一名蒟蒻,我码了半个上午才码出来,接着“静态查错”调了一个下午(捂脸),wa了十几发。晚上拍了一会儿终于调了出来…… //codevs 4927 线段树加强 #include <cstdio>#include <algorithm>#define maxn (100000+原创 2017-01-30 23:05:40 · 575 阅读 · 2 评论 -
Rotate Treap名次树
花了接近一天的时间学习+码+拍+调了出来, 在看到绿绿的“”时,我感到一阵欣慰。注意这题数据应该一定合法,貌似不存在删除的数不存在的情况(害我调了很久QAQ)。感谢dhr给窝的指导(撒花~~~)。 上代码……//bzoj 3224#include <cstdio>#include <algorithm>#include <cstring>#define maxn 100000+5usi原创 2017-02-02 15:23:53 · 359 阅读 · 0 评论 -
SplayTree
Splay是个好东西,中文译名为伸展树,它除了拥有Treap的功能外,还也可以实现快速分裂和合并序列。(学之前最好先对BST和Treap有一定了解) 最重要的是理解Splay的伸展操作,即将一个指定节点x自底向上通过旋转操作,使x成为根节点,要分三种情况来考虑: 1、x的节点为父节点,进行一次单旋即可; 2、x的父节点y、y的父节点z在一条直线上如下图: 3、x,y,z不在一条直线上,形原创 2017-02-03 23:06:49 · 370 阅读 · 0 评论 -
值域线段树
学习了一下动态开树的技巧&&值域线段树…… Problem Description 酷爱日料的小Z经常光顾学校东门外的回转寿司店。在这里,一盘盘寿司 通过传送带依次呈现在小Z眼前。 不同的寿司带给小Z的味觉感受是不一样的,我们定义小Z对每盘寿司都 有一个满意度,例如小Z酷爱三文鱼,他对一盘三文鱼寿司的满意度为10; 小Z觉得金枪鱼没有什么味道,他对一盘金枪鱼寿司的满意度只有5;小Z最原创 2017-02-16 22:09:35 · 1429 阅读 · 0 评论 -
笛卡尔树
具体介绍可以参见这篇Blog https://www.cnblogs.com/pushing-my-way/archive/2012/08/24/2653709.html相关题目: bzoj2616 题解:将图形从下至上划分为若干个矩形,呈现一个树形的结构。然后问题就转化为树上的DP了~ 详细参见:https://blog.youkuaiyun.com/qq_39972971/article/de...原创 2018-06-24 18:27:24 · 489 阅读 · 0 评论