随笔分类 -  数据结构

摘要:"传送门" 十分裸的一个树链剖分,这也是我第一次过树剖题,好激动! 关于这个算法我不多说,自己百度。 代码: cpp / Problem: 1036 User: stone41123 Language: C++ Result: Accepted Time:2484 ms Memory:5676 kb 阅读全文
posted @ 2017-09-27 12:06 玫葵之蝶 阅读(240) 评论(0) 推荐(0)
摘要:"传送门" 首先,很简单的dp方程: $$f_i=max(s_i s_j)(j\in [i m,i])$$然后发现$s_i$与$j$无关,可以提出来: $$f_i=s_i min(s_j)(j\in [i m,i])$$发现这个方程可以用数据结构优化,比如线段树,树状数组等等,我这里推荐用st表。 阅读全文
posted @ 2017-09-26 11:24 玫葵之蝶 阅读(419) 评论(0) 推荐(0)
摘要:传送门 此题非常裸,就是代码太多了,2519,115行。 没什么可说的,思路就是每个节点利用它的父亲建立主席树,查询的时候,sum[u]+sum[v]-sum[lca[u]]-sum[father[lca[u,v]]]就是左子树的大小,然后就没什么了。 代码:(100... 阅读全文
posted @ 2017-09-18 18:09 玫葵之蝶 阅读(134) 评论(0) 推荐(0)
摘要:字典树大家都知道吧,如果不知道可以看这里,我的模板写得还是不错的: 字符串–Trie树(字典树)接下来我们先看一个问题,通过这个问题来了解Xor这个运算的基本性质: 洛谷 P2420 让我们异或吧 题目大意:给定一棵带权树,多次询问两点之间边权异或和。 性质:a^x^... 阅读全文
posted @ 2017-09-18 12:12 玫葵之蝶 阅读(208) 评论(0) 推荐(0)
摘要:传送门 30分做法:(边权为0) 我一开始就在想30分做法,然后就想到了: 首先老套路,正着删边就是倒着加边。 并查集维护连通块大小,每次加边后将两个端点的size值乘起来累加答案。 20分做法: 当n#include#define ll long longusing... 阅读全文
posted @ 2017-09-16 17:15 玫葵之蝶 阅读(173) 评论(0) 推荐(0)
摘要:传送门 首先肯定是线段树,然后问题就是怎么打标记。 观察题目,可以发现,修改操作其实就是给一段区间加上从1到r-l+1的斐波那契数列。 那么思路就是:预处理斐波那契数列前缀和,这样可以O(1)查询斐波那契数列和。然后打标记的时候,比如要修改[L,R],那么统一都打成L... 阅读全文
posted @ 2017-09-16 12:10 玫葵之蝶 阅读(187) 评论(0) 推荐(0)
摘要:传送门 这个题真的很神奇。 数据10000000,所以肯定是线性做法,然后我就不会了,一看题解,并查集,看完了之后,发现真的很巧妙,就是像一个链表一样用并查集。 copy一段: 这道题可以用并查集来打(然而我一开始脑抽竟然用了双向链表-.-),从最后开始往前进行涂色... 阅读全文
posted @ 2017-09-14 18:37 玫葵之蝶 阅读(199) 评论(0) 推荐(0)
摘要:模板传送门 很久以前我就听说Splay很好写,也很实用,今天晚上抄了一个看起来不错的代码,发现的确挺好懂,也挺好写,不过就是有点儿长了,刚好150行。 我还没有怎么好好研究过,这几天打算研究研究,所以我也不讲原理了,自行百度吧。 代码:#include#include... 阅读全文
posted @ 2017-09-11 20:16 玫葵之蝶 阅读(144) 评论(0) 推荐(0)
摘要:模板:可并堆 可并堆真的很好写!可并堆真的很好写!可并堆真的很好写! 只有一个合并操作,插入都是用合并实现的,最多再来一个并查集,真的简单到爆好吗。。 代码:#include#define ll long longusing namespace std;const i... 阅读全文
posted @ 2017-08-28 20:48 玫葵之蝶 阅读(161) 评论(0) 推荐(0)
摘要:此题树状数组卡常好题(滑稽)题目描述很久很久以前,在遥远的大陆上有一个美丽的国家。统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草。有一天国王漫步在花园里,若有所思,他问一个园丁道: “最近我在思索一个问题,如果我们把花坛摆成六个六角形,那... 阅读全文
posted @ 2017-08-28 20:14 玫葵之蝶 阅读(101) 评论(0) 推荐(0)
摘要:主席树原理就是区间内的第k大可以通过每个数字的出现次数随便乱加减搞出来,然后,就可以像前缀和那样建n个线段树,就可以查询区间第k大了! 主要问题就是空间绝对爆炸,大概n2logn左右。 看这个图:(来自blog) 可以发现每一颗线段树结构都相同,只是每次都有logn... 阅读全文
posted @ 2017-08-28 19:58 玫葵之蝶 阅读(102) 评论(0) 推荐(0)
摘要:此题大约为提高+的难度。题目描述在数轴上有 n个闭区间 [l1,r1],[l2,r2],…,[ln,rn]。现在要从中选出 m 个区间,使得这 m个区间共同包含至少一个位置。换句话说,就是使得存在一个 x,使得对于每一个被选中的区间 [li,ri],都有 li≤x≤r... 阅读全文
posted @ 2017-08-28 19:38 玫葵之蝶 阅读(120) 评论(0) 推荐(0)
摘要:吐槽:在模板题,我的丑陋的线段树跑了984ms,而大神的只跑了364ms,看来我的代码还是太丑了QAQ大神的线段树也没什么大优化,就是不知道为什么超级快,或许是我以前看的线段树代码不好吧。。。 我推荐这个线段树的主要原因就是非常好写,空间也是非常小,思路极其清晰。 好... 阅读全文
posted @ 2017-08-25 20:53 玫葵之蝶 阅读(223) 评论(0) 推荐(0)
摘要:好几天没写了,写点儿奇怪的东西,一个不好理解的黑科技。zkw线段树,顾名思义,就是zkw大神发明的线段树。 由于我实在是太弱了,无法讲述zkw大神的高深的ppt,就留一个下载网址:统计的力量(zkw线段树) 我这里要说的,就是zkw线段树的具体用法,首先,原版zkw只... 阅读全文
posted @ 2017-08-19 00:15 玫葵之蝶 阅读(211) 评论(0) 推荐(0)
摘要:堆是一棵完全二叉树,可以O(1)取最值,O(logn)删除最值,或插入元素。 堆的性质:每个非叶子节点比它的孩子都大(大根堆/大顶堆)/每个非叶子节点比它的孩子都小(小根堆/小顶堆)。 从上面的性质可以推出堆的根就是最值。 堆的常用操作:top返回堆顶,pop弹出堆顶... 阅读全文
posted @ 2017-08-09 00:40 玫葵之蝶 阅读(145) 评论(0) 推荐(0)
摘要:我为什么一看见这题就想用树状数组,又好写,又实用,多好。。。 nlogn建树,单词查询logn,对于100000的数据绰绰有余。 不过这好像和一般的树状数组不一样,一般都是求和,这次是求最值,变一下查询函数query。//a[i]代表第i个数字,t[i]就是树状数组/... 阅读全文
posted @ 2017-08-06 00:07 玫葵之蝶 阅读(103) 评论(0) 推荐(0)
摘要:题目描述追逐影子的人,自己就是影子 ——荷马Allison 最近迷上了文学。她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的《荷马史诗》。但是由《奥德赛》和《伊利亚特》 组成的鸿篇巨制《荷马史诗》实在是太长了,Allison 想通过一种编码方式使... 阅读全文
posted @ 2017-08-03 00:31 玫葵之蝶 阅读(160) 评论(0) 推荐(0)