随笔分类 -  数据结构

摘要:题面 "洛咕" Solution 题目要求求出区间众数,强制在线。 区间众数是一个比较尴尬的问题,我们无法用区间数据结构来处理这个问题,因为我们没法很好的合并区间众数的答案。 既然区间数据结构解决不了这个问题,我们可以考虑一下使用基于分块的算法,例如莫队。 这题用莫队非常好处理,不幸的是,这题要求强 阅读全文
posted @ 2019-02-04 12:26 GoldenPotato 阅读(311) 评论(0) 推荐(0)
摘要:题面 传送门:[CQOI2011]动态逆序对 Solution 一开始我看到pty巨神写这套题的时候,第一眼还以为是个SB题:这不直接开倒车线段树统计就完成了吗? 然后冷静思考了一分钟,猛然发现单纯的线段树并不能解决这个问题,好像还要在外面再套上一颗树。 这就很shit了。你问我资磁不资磁树套树,我 阅读全文
posted @ 2019-01-13 15:12 GoldenPotato 阅读(218) 评论(0) 推荐(0)
摘要:题面 传送门:洛谷 Solution 这题其实是有类似模型的。 我们先考虑不修改怎么写。考虑这样做:每个点向它跳到的点连一条边,最后肯定会连成一颗以n+1为根的树(我们拿n+1代表被弹出去了)。题目所问的即是某个点到树根的链的长度。 那么,如果我们加上修改,显然,某个点连向的点会发生改变。对于一个能 阅读全文
posted @ 2019-01-11 10:23 GoldenPotato 阅读(162) 评论(0) 推荐(0)
摘要:题面 传送门:https://www.luogu.org/problemnew/show/P2147 Solution 这题...... 我们可以发现题目要求我们维护一个动态森林,而且只查询连通性.... 显然LCT模板题啊,关于LCT玩法,可以猛戳这里学习 Code 阅读全文
posted @ 2019-01-11 10:14 GoldenPotato 阅读(152) 评论(0) 推荐(0)
摘要:为啥要学LCT啊 在开坑之间,我们来先看一段对话: Q:给你一颗森林,现在不断的连接森林中的两棵树,保证不连出环,多次问你某两个点的连通性? A(dalao&蒟蒻):这不是SB题吗?显然并查集水过啊。 Q:说的好,但是如果我要删除某些边呢? A(dalao):那就可持久化并查集啊,你的问题怎么那么水 阅读全文
posted @ 2019-01-11 09:39 GoldenPotato 阅读(373) 评论(0) 推荐(1)
摘要:题面 传送门:https://www.luogu.org/problemnew/show/P2387 Solution 这题的思想挺好的。 对于这种最大值最小类的问题,很自然的可以想到二分答案。很不幸的是,这题是双关键字排序的,我们怎么二分呢? 先二分a再二分b?怎么看都布星啊。 那a+b作为关键字 阅读全文
posted @ 2019-01-10 12:40 GoldenPotato 阅读(340) 评论(0) 推荐(0)
摘要:什么是淀粉质点分治? 就是把分治搬到树上,以某个点为根,分别分治处理子树的答案,再计算子树与子树间的答案的玄学算法。 举个例子: 如何求出一颗树上距离为K且所经过的点最少的点对? 对于这种题,我们可以把某个点(一般为重心)作为根,然后对左右子树递归处理,先分别得出左右子树的答案,再求出横跨两个子树之 阅读全文
posted @ 2019-01-05 14:59 GoldenPotato 阅读(366) 评论(0) 推荐(0)
摘要:题面 传送门:https://www.luogu.org/problemnew/show/P4178 Solution 首先,长成这样的题目一定是淀粉质跑不掉了。 考虑到我们不知道K的大小,我们可以开一个splay来统计比某个数小的数的数量。 具体做法等我开淀粉质讲解的坑再满满填(咕) Code 阅读全文
posted @ 2019-01-02 19:47 GoldenPotato 阅读(151) 评论(0) 推荐(0)
摘要:题面 传送门:https://www.luogu.org/problemnew/show/P2824 Solution 这题极其巧妙。 首先,如果直接做m次排序,显然会T得起飞。 注意一点:我们只需要找到一个数。 所以说,我们可以考虑一个绝妙的想法:我们可以用二分答案的方法缩小要找的数的区间。 考虑 阅读全文
posted @ 2018-10-19 08:28 GoldenPotato 阅读(204) 评论(0) 推荐(0)
摘要:题面: 传送门:http://codeforces.com/problemset/problem/893/F 题目大意:给你一颗有根树,点有权值,问你每个节点的子树中距离其不超过k的点的权值的最小值。(边权均为1,强制在线) Solution 这题很有意思。 我们一般看到这种距离不超过k的题目,第一 阅读全文
posted @ 2018-10-19 08:00 GoldenPotato 阅读(429) 评论(0) 推荐(0)
摘要:题面 传送门:https://www.luogu.org/problemnew/show/P3899 Solution 你们搞的这道题啊,excited! 这题真的很有意思。 首先,我们可以先理解一下题面:固定一个a,找到一个b,c就是a与b的公共子树中的某个点。 那么,我们显然可以把这个b分成两类 阅读全文
posted @ 2018-10-16 22:59 GoldenPotato 阅读(458) 评论(0) 推荐(1)
摘要:题面 传送门:https://www.luogu.org/problemnew/show/P4215 Solution 这题十分有意思。 首先,我们可以先想想离线做法,因为在线做法可以从离线做法推出。(虽然这题推不出) 我们可以明确一点,一个熊孩子开心的时间是满足二分的要求的(如果他某个时刻开心了, 阅读全文
posted @ 2018-10-14 20:41 GoldenPotato 阅读(213) 评论(0) 推荐(0)
摘要:题面: 传送门:https://www.luogu.org/problemnew/show/P2827 Solution 看到这题,我们肯定会有一个大胆想法。 那就是直接用堆模拟这个过程。 对于q,我们只需要在堆中多维护一个T,记录每个点插入的时间,在新的元素插入时直接计算所比较的点的当前长度就可以 阅读全文
posted @ 2018-09-09 21:48 GoldenPotato 阅读(236) 评论(0) 推荐(0)
摘要:题面 传送门:https://www.luogu.org/problemnew/show/P3626 Solution 如果题目只要求求出第一问,那这题显然就是大水题。 但是加上第二问的话.......那这题就成为大(du)火(liu)题了。 对于第一问:求一整个区间的最大线段总数,我们可以很轻松的 阅读全文
posted @ 2018-09-03 23:02 GoldenPotato 阅读(314) 评论(0) 推荐(0)
摘要:题面 传送门:https://www.luogu.org/problemnew/show/P2278 Solutiton 挺简单的一道模拟题,拿堆模拟一下题目意思就好 堆中有两个关键字,分别是优先级和到达时间 还要维护一下每个任务剩余时间(还有多久完成) 因为堆不能直接改.得在堆里记录编号然后映射出 阅读全文
posted @ 2018-05-04 12:22 GoldenPotato 阅读(193) 评论(0) 推荐(0)
摘要:题面 传送门:https://www.luogu.org/problemnew/show/P2161 Solution splay 的确有线段树/树状数组的做法,但我做的时候脑残没想到 我们可以考虑写一个类似NOIP2017D2T3列队那道题那样的带分裂的平衡树 考虑用splay维护每一条线段的左端 阅读全文
posted @ 2018-05-02 18:55 GoldenPotato 阅读(406) 评论(0) 推荐(0)