摘要:
link 简介: 主席树是一种可持久化数据结构,全称为可持久化权值线段树,支持查询历史版本内信息,单点修改同时新建版本等操作,也是一种函数式线段树, 可支持完全持久化。 原理: 首先考虑朴素的做法,每次新建版本时都 copy 一份,并且在这个 copy 下来的版本上面进行操作。这种做法空间复杂度是很 阅读全文
posted @ 2024-04-25 13:22
Little_corn
阅读(19)
评论(0)
推荐(0)
摘要:
题目大意: 给定一棵有 \(n\) 个节点的树,要你统计 \(\sum _{1 \le x \le y \le n} {dist(x,y)/k}\) (\(dist(x,y)\) 表示 \(x\) 到 \(y\) 的距离) \(n \le 2 \times 10^5,k \le 5\) 解法: 一道 阅读全文
posted @ 2024-04-25 13:22
Little_corn
阅读(18)
评论(0)
推荐(0)
摘要:
link Solution: PART 1: 转化 首先套路地预处理出每个节点到根节点(\(1\) 号节点)路径上的点权异或和 \(w[u]\) 。 可以发现题意容易转化为:给定一棵 \(n\) 个节点的树,问你最少可以把它分成多少个联通块,使得每个连通块中的节点两两路径上的异或和不为 0。 易知对 阅读全文
posted @ 2024-04-25 13:21
Little_corn
阅读(32)
评论(0)
推荐(0)
摘要:
题目简述: 给定一个有 \(n\) 个节点, \(m\) 条边的图,每条边有两个权值 \(g\) ,\(s\)。对于图中的一棵生成树,它的花费定义为 \(\max _ {i \in e}{g_i} \times valg + \max _ {i \in e}{s_i} \times vals\) , 阅读全文
posted @ 2024-04-25 13:20
Little_corn
阅读(20)
评论(0)
推荐(0)
摘要:
link 题目大意: 给一个 \(n\) 个元素的序列,\(q\) 次询问 \([l_i,r_i]\) 的最大子段和(相同元素只算一个)。 \(n,q \le 10^5,- 10^5\le a_i \le 10^5\). 解法: 首先考虑最大子段和的经典动态解法:维护 \(pre_i,suf_i,s 阅读全文
posted @ 2024-04-25 13:19
Little_corn
阅读(14)
评论(0)
推荐(0)
摘要:
cdq 分治: 一个长度为 \(n\) 的序列,统计有一些特性的点对 \((i,j)\) 的数量/找到一对点 \((i,j)\) 使得一些函数的值最大。对于这一类问题,我们考虑使用 \(\rm cdq\) 分治思想来解决。 什么是 \(\rm cdq\) 分治思想? \(\rm cdq\) 解决这种 阅读全文
posted @ 2024-04-25 13:16
Little_corn
阅读(24)
评论(0)
推荐(0)
摘要:
P3369 【模板】普通平衡树 前言: 平衡树是一种二叉搜索树,通过一些方法来做到快速维护单点或区间信息和快速查询单点或区间信息,其中包括排名、前驱等等。在 \(\rm STL\) 库中虽有实现,但是由于封装的太好以及是可持久化数据结构的基础,还是需要学习的。 FHQ Treap: FHQ Trea 阅读全文
posted @ 2024-04-25 13:15
Little_corn
阅读(25)
评论(0)
推荐(0)
摘要:
link1 link2 前言: 树链剖分实际上就是一种将树形结构剖分成一条条链状结构,并用线性数据结构来快速维护信息。 重链剖分: 一些定义: 重儿子:一个节点的重儿子定义为它的子节点中子树节点最大的节点。 轻儿子:一个节点除重儿子外的所有儿子 重边:一个节点到它的重儿子的边即为重边 轻边:一个节点 阅读全文
posted @ 2024-04-25 13:14
Little_corn
阅读(16)
评论(0)
推荐(0)
摘要:
link Solution: 贪心神仙题。 tips: 对于贪心题目,先考虑两个东西时的情况,一般是可以扩展到多个东西的情况的。 此时我们考虑两订单 \(i\) 和 \(j\)。 先 \(i\) 后 \(j\) : \(a[i]+\max(b[i],a[j])+b[j]\) 先 \(j\) 后 \( 阅读全文
posted @ 2024-04-25 13:13
Little_corn
阅读(15)
评论(0)
推荐(0)
摘要:
Solution: 使用拓展域并查集,\(1-n\) 表示 \(\rm A\) 群落,\(n+1-2n\) 是 \(\rm B\) 群落,\(2n+1 - 3n\) 是 \(\rm C\) 群落 那么对于操作一,我们首先判断 \(x\) 是否吃了 \(y\) 或 \(y\) 是否吃了 \(x\) . 阅读全文
posted @ 2024-04-25 13:12
Little_corn
阅读(11)
评论(0)
推荐(0)