![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 78
Inspector_Javert
这个作者很懒,什么都没留下…
展开
-
【洛谷2982】[Usaco2010 Feb]慢下来Slowdown(dfs序+线段树)
题目:洛谷2982分析:这道题最重要的是想明白一点:牛i走到以后只对P_i的子树产生影响知道这个以后,就可以想到在线维护每个牧场已经被“影响”了多少次(也就是在此之前有多少个牛是到达自己的祖先结点的),这就是从谷仓到这个牧场需要减速多少次。怎么维护子树信息呢?dfs序+线段树啊……于是变成模板题代码:(虽然题目只要求支持单点查询,但是线段树模板打顺手了就不知不觉地写了区间查询……)in[i]代表i...原创 2017-12-16 13:58:34 · 251 阅读 · 0 评论 -
【洛谷4215】踩气球(线段树)
题目:洛谷4215分析:感觉思路有点像线段树分治?把所有区间插到线段树上。我一开始的想法是修改时给树上一条链上包含的所有熊孩子的值都减111,然后发现这个单次最坏是O(m)O(m)O(m)的,gg。可以记录每个熊孩子被分成了多少个非零的区间。修改时如果某个区间变成000了,那么就给包含该区间的熊孩子的区间数减111,这样均摊最多有mlogmm\log mmlogm个区间,总复杂度O(q...原创 2018-12-14 07:30:58 · 166 阅读 · 0 评论 -
【知识总结】后缀数组(Suffix_Array)
又是一个学了n遍还没学会的算法……后缀数组是一种常用的处理字符串问题的数据结构,主要由sasasa和rankrankrank两个数组组成。以下给出一些定义:strstrstr表示处理的字符串,长度为lenlenlen。(下标从000开始)[i,j)[i,j)[i,j)表示strstrstr从iii到j−1j - 1j−1的字串。后缀iii表示子串[i,len)[i,len)[i,len),...原创 2018-12-14 07:18:55 · 339 阅读 · 0 评论 -
【Codeforces576E_CF576E】Painting Edges(可撤销并查集+线段树分治)
题目CF576E分析:从前天早上肝到明天早上qwq其实颓了一上午MC ,自己瞎yy然后1A,写篇博客庆祝一下。首先做这题之前推荐一道很相似的题:【BZOJ4025】二分图(可撤销并查集+线段树分治)大力每个颜色维护一个并查集,就很像上面那道题了。但是存在一个问题:在处理线段树区间[l,r][l,r][l,r]时,可能并不知道lll处的修改是否成功,所以不知道lll处修改的边具体是什么颜色...原创 2018-12-14 07:18:25 · 602 阅读 · 0 评论 -
【BZOJ1483】[HNOI2009]梦幻布丁(平衡树启发式合并+并查集)
题目:BZOJ1483分析:(这题码了一下午,码了近250行,但是意外跑的比本校各位神仙稍快,特写博客纪念)首先能看出一个显然的结论:颜色段数只会变少不会变多。我们考虑用并查集维护区间,对于每个区间维护它的起点和终点。建nnn棵平衡树,第iii棵存颜色为iii的区间。把xxx变成yyy时进行启发式合并,同时对于xxx上的每个结点[a,b][a,b][a,b],在yyy中找a−1a-1a−...原创 2018-12-03 13:26:33 · 227 阅读 · 0 评论 -
【BZOJ4025】二分图(可撤销并查集+线段树分治)
题目:BZOJ4025分析:定理:一个图是二分图的充要条件是不存在奇环。先考虑一个弱化的问题:保证所有边出现的时间段不会交叉,只会包含或相离。还是不会?再考虑一个更弱化的问题:边只会出现不会消失。当加边的时候,若(u,v)(u,v)(u,v)不连通:一定不会构成奇环,将它加入。若(u,v)(u,v)(u,v)已经联通,则不加入这条边,而是查询uuu和vvv两点间的距离。若为偶数则...原创 2018-11-25 11:26:39 · 418 阅读 · 0 评论 -
【BZOJ3110】[ZJOI2013]K大数查询(整体二分)
题目:BZOJ3110分析:整体二分模板题……先明确一下题意:每个位置可以存放多个数,第一种操作是“加入 (insert) ”一个数而不是“加上 (add) ”一个数。首先考虑只有一次询问的情况。设询问的名次为kkk,我们二分出一个答案midmidmid,然后遍历所有修改。建立一棵区间线段树(下标是位置的线段树),对于一个给[a,b][a,b][a,b]区间加入一个数ccc的修改,如果c...原创 2018-11-24 17:27:28 · 198 阅读 · 1 评论 -
【洛谷4396/BZOJ3236】[AHOI2013]作业(莫队+分块/树状数组/线段树)
题目:洛谷4396BZOJ3236(权限)这题似乎BZOJ上数据强一些?分析:这题真的是……一言难尽发现题面里没说权值的范围,怕出锅就写了离散化。后来经过面向数据编程(以及膜神犇代码)知道最大权值1e51e51e5(下文用MMM表示最大权值。注意如果没有这个限制,把所有数的权值和询问中提到的权值一起离散化后MMM也可以达到n+2m=2.1e6n+2m=2.1e6n+2m=2.1e6),...原创 2018-11-13 23:34:24 · 142 阅读 · 0 评论 -
【BZOJ2762】[JLOI2011]不等式组(树状数组)
题目:BZOJ2762分析:加入的不等式分三种情况 当a>0a>0a>0,可以变成x>⌊c−ba⌋x>⌊c−ba⌋x>\lfloor \frac{c-b}{a}\rfloor 当a=0a=0a=0,若b>cb>cb>c则恒成立,否则恒不成立 当a<0a<0ax&a原创 2018-09-15 12:06:38 · 310 阅读 · 0 评论 -
【洛谷2839/BZOJ2653】middle(主席树)
题目:洛谷2839分析:原创 2018-09-24 18:19:52 · 197 阅读 · 0 评论 -
【洛谷3224/BZOJ2733】[HNOI2012]永无乡 (Splay启发式合并)
题目:洛谷3224分析:这题一看n≤100000n≤100000n\leq100000的范围就知道可以暴力地用O(nlogn)O(nlogn)O(nlogn)数据结构乱搞啊……每个联通块建一棵Splay树,查询就是Splay查询第k大的模板,建桥的时候就把两个联通块的Splay进行“启发式合并”本来以为启发式合并是什么高端的东西,tzh神犇给我说就是把小的推倒然后暴力插...原创 2018-07-10 18:54:35 · 180 阅读 · 0 评论 -
【洛谷3467/BZOJ1113】[POI2008]海报PLA-Postering(单调栈)
题目:洛谷3467分析:(ti jie shuo)这题是个单调栈经典题。单调栈就是栈元素递增或递减的栈,这里只考虑递增。新元素入递增栈时,先将所有比它大的元素弹出,然后让新元素入栈,这样保证栈顶永远是最大的元素,代码如下:(a是新元素)while(top>0&&stack[top]>a)top--;stack[++top]=a;然后来分析这道题。我这种蒟蒻乍一看一脸懵...原创 2017-12-20 13:51:04 · 268 阅读 · 0 评论 -
【Vijos1083/BZOJ1756】小白逛公园(线段树)
【写在前面】TYC (Little White) 真是太巨啦!题目:Vijos1083分析:一眼看上去就是线段树啊……然而当我这种蒟蒻兴高采烈地把线段树模板敲了一半,却发现一个问题:这子区间最大值的查询咋整啊……于是经过仔cha细zhao思ti考jie,设计了这样一个线段树结点类型:struct node{ int val; int lm; int rm; int mm;}tree[2...原创 2017-12-19 21:09:48 · 339 阅读 · 0 评论 -
【知识总结】后缀自动机的构建
参考资料:(APIO2018)从DFA到后缀自动机_张云帆又一个学了很多遍都不会的算法/数据结构……(话说我怎么每篇知识总结一开始都是这句话qwq)先orz后缀自动机之神兔崽子TzzDzz(顺便喂它最喜欢吃的叶子)OrzTzzDzz前排提示:由于作者很菜,且本文的目标是快速理解并写出 (背过) 后缀自动机的构建过程,所以将会省略很多结论的证明,语言也有不严谨之处,敬请谅解。如感兴趣可以参考...原创 2018-12-21 22:25:47 · 260 阅读 · 0 评论