摘要: 0. 离线与在线 在线算法一般是 预处理 + 输出。离线算法一般是 输入 + 一起处理。 一个典型的例子是求 LCA,有两种方法:倍增、Tarjan。 倍增是预处理所有节点的 \(2^k\) 祖先,然后每次暴力跳。 Tarjan 是输入完所有数据,再全部放在树上处理。 1. 普通莫队 1.1 莫队主 阅读全文
posted @ 2024-11-23 15:37 sLMxf 阅读(20) 评论(0) 推荐(0)
摘要: 0. 离线与在线 在线算法一般是 预处理 + 输出。离线算法一般是 输入 + 一起处理。 一个典型的例子是求 LCA,有两种方法:倍增、Tarjan。 倍增是预处理所有节点的 2k2^k2k 祖先,然后每次暴力跳。 Tarjan 是输入完所有数据,再全部放在树上处理。 1. 普通莫队 1.1 莫队主 阅读全文
posted @ 2024-11-23 09:17 sLMxf 阅读(55) 评论(1) 推荐(1)
摘要: Pro 定义一次转化 u⇒vu\Rightarrow vu⇒v 代价为 lcm⁡(u,v)\operatorname{lcm}(u,v)lcm(u,v),求 u⇒vu\Rightarrow vu⇒v 的最小代价。 Sol 如果 u=vu=vu=v,不需要转化,代价 000。 其次可以 u⇒1⇒vu\ 阅读全文
posted @ 2024-11-15 09:34 sLMxf 阅读(37) 评论(0) 推荐(0)
摘要: Pro 构造序列 aaa,长度为 nnn,并使得序列有 kkk 组倍数关系。 要求:ai≤2n−1a_i\le 2n-1ai​≤2n−1。 Sol 我们最好让这个序列有序,因为这样只有后面的数对前面的数有倍数关系。 首先我们发现,n∼2n−1n\sim 2n-1n∼2n−1 中间是没有倍数关系的。 阅读全文
posted @ 2024-11-15 09:27 sLMxf 阅读(21) 评论(0) 推荐(0)
摘要: 闲话 本篇题解来自赛场第二切,比@dead_X 慢了整整 0.6s0.6s0.6s。 Pro 给定 sss,求一个最短字符串 ttt,使得 sss 是 ttt 的最长 border。 Sol 前置知识:KMP,记号 ∣a∣|a|∣a∣ 表示字符串 aaa 的长度。 首先我们可以输出这个字符串,因为 阅读全文
posted @ 2024-11-15 09:07 sLMxf 阅读(13) 评论(0) 推荐(0)
摘要: 我发现树的 BFS 序有一个重要的性质: xxx 的所有子结点必定连续。 阅读全文
posted @ 2024-11-14 11:19 sLMxf 阅读(10) 评论(0) 推荐(0)
摘要: 居然让我一遍过了...... Pro 查询区间内最长合法序列。 Sol 定义 w1uw1_uw1u​ 表示不可匹配左括号,w2uw2_uw2u​ 同理。 那么考虑如何从 w1lw1_lw1l​ 和 w1rw1_rw1r​ 推出 w1uw1_uw1u​。 最容易想到的是 w1u=w1l+w1rw1_u 阅读全文
posted @ 2024-11-13 16:17 sLMxf 阅读(14) 评论(0) 推荐(0)
摘要: Sol Subtask 1 有一种简单的方式:将所有的海报先贴上去,然后在看每个位置是哪一张海报。 这个时间复杂度是 O(T(r−l)log⁡(r−l))O(T(r-l)\log (r-l))O(T(r−l)log(r−l)) 的,肯定会 TLE。 Subtask 2 因为 nnn 很小,所以将其离 阅读全文
posted @ 2024-11-13 14:22 sLMxf 阅读(14) 评论(0) 推荐(0)
摘要: 0. 树?睡蕉小猴! 因为以前的线段树写成了好几个 blog,所以这里写一个合集。 1. 线段树 1.1 线段树 1 线段树是用来处理一类“区间修改+区间操作”的问题的数据结构。 1.2 线段树的节点与性质 建立一棵二叉树,根节点为 111,每个节点会处理一个区间 [l,r][l,r][l,r] 的 阅读全文
posted @ 2024-11-13 10:25 sLMxf 阅读(49) 评论(0) 推荐(0)
摘要: 本人十分的菜,所以不要嘲讽本人 S 成绩。 备考 你猜我前两周在干什么?在做这个和这个。 考试 上午的 J 组,无需多盐。 T1 S 组本来相信不会有什么“密码锁”难度的题,然后“决斗”把我整蒙了? 当然吧,考场上也没一眼看出来怎么做,但 10min10\text{min}10min 还是切了。 本 阅读全文
posted @ 2024-11-12 21:26 sLMxf 阅读(24) 评论(0) 推荐(0)