随笔分类 -  数据结构-线段树

摘要:整体二分一类题目中的高端题 如果不是有向图,这个题也就是个紫题水平。直接倒序加边,每个点维护一棵权值线段树,再用并查集判联通块即可…… 但是,它是有向图…… 这意味着我们根本不知道什么时候他会构成连通块。 考虑每个有向边,对一条边连接的两个点来说,肯定有一个时刻它们不再在同一个连通块里,所以单个边考 阅读全文
posted @ 2021-09-28 22:00 ·Iris 阅读(103) 评论(0) 推荐(0)
摘要:线段树分裂 给自己看的,就挑一下重点 需要动态开点…… 用 \(\rm new\) 函数的话也没什么,不过不能写回收栈了,直接 \(\rw delete\) 即可 \(split\) 类似于主席树,直接指针指过去即可,记得要把原指针清掉 剩下的细节都在代码里写了 #include <bits/std 阅读全文
posted @ 2021-09-28 21:52 ·Iris 阅读(151) 评论(0) 推荐(1)
摘要:P1177 基数排序 基本理论就是把一个数字分成k个关键字,每次对n个数同时对于k关键字排序 时间复杂度$O(n \times \frac{n_max}{radix})$,空间复杂度是$O(n+radix)$ radix为取的基数,通常取 \(65536\) 或者是 \(256\), \(NOI\) 阅读全文
posted @ 2021-09-28 21:50 ·Iris 阅读(98) 评论(0) 推荐(0)
摘要:首先看到题目要求实现区间询问和单点修改,又发现题目有一条特殊性质——\(n\leq30\)。由此可以想到对 \(m\) 建一棵线段树,每个节点维护字符串压缩后的信息。 接下来思考如何状压这个字符串。字符串中有三种字符 0,1,?。可以将 0 状压为 \((10)_2\),1 状压为 \((01)_2 阅读全文
posted @ 2021-09-28 21:45 ·Iris 阅读(156) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2021-09-28 21:44 ·Iris 阅读(0) 评论(0) 推荐(0)
摘要:P6773 一眼看出 \(\rm dp\) 方程 设 \(dp[i][j]\) 表示以 \(i\) 为根的子树,子树内所有未覆盖路径中结尾点最小的深度为 \(j\)。 考虑合并两个子树 \[ dp[u][i] \times dp[v][j] \to dp[u][\max(i,j)] \] 然后可以得 阅读全文
posted @ 2021-09-28 20:33 ·Iris 阅读(110) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2021-09-27 11:38 ·Iris 阅读(0) 评论(0) 推荐(0)