摘要: 引入 洪水: 小 A 走到一个山脚下,准备给自己造一个小屋。这时候,小 A 的朋友(op,又叫管理员)打开了创造模式,然后飞到山顶放了格水。于是小 A 面前出现了一个瀑布。作为平民的小 A 只好老实巴交地爬山堵水。那么问题来了: 我们把这个瀑布看成是一个 \(n\) 个节点的有根树,编号为 \(1\ 阅读全文
posted @ 2025-09-06 21:15 merlinkkk 阅读(9) 评论(0) 推荐(0)
摘要: 引入 在做一些树上问题的时候,题目会给出一些 关键点,所有的问题只跟关键点的关系很大,而跟其他的点关系不大,这时候我们可以考虑 虚树。 大工程: 在一场战争中,战场由 \(n\) 个岛屿和 \(n-1\) 个桥梁组成,保证每两个岛屿间有且仅有一条路径可达。现在,我军已经侦查到敌军的总部在编号为 \( 阅读全文
posted @ 2025-09-06 21:15 merlinkkk 阅读(13) 评论(0) 推荐(0)
摘要: 引 Empty 本文同步发表在 博客园 静态树分治 这个算法可以处理关于树上所有链信息的问题,由于枚举所有链的复杂度绝对是 \(O(n^2)\)。所以需要更优秀的算法,可以通过合并两条链的方式枚举所有链。 树分治是一个暴力数据结构。 它可以在 \(O(n \log n)\) 的时间里遍历所有的链。 阅读全文
posted @ 2025-09-03 23:14 merlinkkk 阅读(22) 评论(0) 推荐(0)
摘要: 思路 算至少有一个点的矩形可以转化成所有矩形减去没有任何点的矩形。 接下来问题转化成算没有任何点的矩形。 考虑扫描线,我们从上往下扫,每个矩形的下边界一定贴着扫描线。 我们接下来所说的坐标为从左到右第 \(x\) 行,从上到下第 \(y\) 列。 设 \(p_i\) 为第 \(i\) 列离扫描线最近 阅读全文
posted @ 2025-07-25 22:27 merlinkkk 阅读(9) 评论(0) 推荐(0)
摘要: 模拟赛妙妙题! 题意 最开始有一个原始字符串 \(S\),长为 \(n\),由前 \(k\) 个小写字母组成。 有 \(m\) 次操作。 将原序列 \([l, r]\) 赋值 \(c\)。 给定 \(t\),是前 \(k\) 个小写字母的排列。将 \(t\) 复制 \(x\) 遍,记为 \(t'\) 阅读全文
posted @ 2025-07-25 22:24 merlinkkk 阅读(8) 评论(0) 推荐(0)
摘要: 好妙啊!这道题让我大开眼界! 写一篇题解加深一下印象。 思路 我重点对把原问题建模成一个树上问题的部分进行补充。 最开始读题的时候没有看到最多只跳过一个棋子,没想到这竟然是突破口。 我们假设一个状态 \((x, y, z)\),不妨设 \(x \le y \le z\)。 考虑它能怎么变化?这里为了 阅读全文
posted @ 2025-02-20 18:49 merlinkkk 阅读(27) 评论(0) 推荐(0)
摘要: 思路 思路还是很显然的,简单总结一下思路: 首先,将圆环从点 \(1\) 到 \(2N\) 切开,并将其拉直成一条直线。 在切开状态下,原来的弦变成了直线上的曲线。我们需要判断这些曲线之间是否存在交点。 在切开状态下,曲线之间的交点等价于满足 \(A_i < A_j < B_i < B_j\) 的不 阅读全文
posted @ 2024-07-16 21:12 merlinkkk 阅读(49) 评论(0) 推荐(0)
摘要: 思路 容易发现,如果 \(a_i>b_i\) 则将 \(a_i\) 和 \(b_i\) 交换。 在数轴上标出要交换的四个数的位置若线段 \(a_ib_i\) 和 线段 \(a_jb_j\) 互不相交,此时交换比两条线段处于其他位置时更优。 具体证明这里就不再赘述,其他题解讲的已经很清楚了。 所以只需 阅读全文
posted @ 2024-07-16 21:11 merlinkkk 阅读(48) 评论(0) 推荐(0)
摘要: 思路 通过读题发现,每个数变化当且仅当这个数在集合内。所以不妨设它被添加进来的时间点为 \(L_i\),它被删除的时间点为 \(R_i\),所以它被增加的数量就是这段时间内集合数量之和。所以用一个变量 \(cnt\) 模拟当前集合内有多少个数,前缀和维护即可。具体实现参见代码。 代码 #includ 阅读全文
posted @ 2024-07-16 21:10 merlinkkk 阅读(37) 评论(0) 推荐(0)
摘要: 思路 容易想到是个动态规划。首先设 \(f_i\) 表示字符串前 \(i\) 个字符所组成的字符串的答案。状态定义好了,接下来就是考虑如何转移了。因为由 \(f_i\) 可以得到所有 \(f_j\),其中 \(i+j\le len\),转移方程为 \(f_i=f_j+x\),其中 \(x\) 为 字 阅读全文
posted @ 2024-07-16 21:09 merlinkkk 阅读(34) 评论(0) 推荐(0)