摘要: 过程 线段树分裂是线段树合并的逆操作,即将一个区间信息分裂到新的树中,新的树一般需要新建。 注意当分裂和合并都存在时,我们在合并的时候必须回收节点,以避免分裂时会可能出现节点重复占用的问题。 时间复杂度显然 \(\mathcal{O}(\log n)\)。 实现 //将 x 分裂出 [p, q] 到 阅读全文
posted @ 2024-05-26 20:41 Z_drj 阅读(5) 评论(1) 推荐(0) 编辑
摘要: Little Pony and Lord Tirek 题解 \(\texttt{Problem Link}\) 题目大意 给定长度为 \(n\) 的序列,第 \(i\) 个数有三个值: \(s_i, m_i, r_i\),每秒对于每个数执行 \(s_i \leftarrow \min\{s_i + 阅读全文
posted @ 2024-05-14 17:15 Z_drj 阅读(17) 评论(0) 推荐(0) 编辑
摘要: \(\texttt{Problem Link}\) 简要题意 给定一个序列 \(a\),求 \(\sum \limits _{i = 1} ^ n cnt_i\)。 \(cnt_i\) 表示在 \(a\) 中选择长度为 \(i\) 的非空子序列 \(b\) 使得 \(\forall j \in [1 阅读全文
posted @ 2024-04-18 16:25 Z_drj 阅读(19) 评论(0) 推荐(0) 编辑
摘要: \(\texttt{Problem Link}\) 简要题意 有 \(n\) 个人,有 \(m\) 道题目,可以花费 \(b\) 元买一台显示器。现在可以让一些人给你打工,第 \(i\) 个人打工要 \(x_i\) 的工资还有 \(k_i\) 台显示器(第 \(i\) 个人用的显示器,其他人也可以用 阅读全文
posted @ 2024-04-11 21:16 Z_drj 阅读(28) 评论(1) 推荐(0) 编辑
摘要: \(\texttt{Problem Link}\) 简要题意 给定一个数字,可以把数字进行划分成很多连续的段, 问分出的段按顺序单调递增的划分方案有多少种。 思路 可以设 \(f_{i,j}\) 表示以第 \(i\) 个数结尾,且最后一段的长度长为 \(j\) 的方案数。 容易得到状态转移方程: \ 阅读全文
posted @ 2024-04-10 21:07 Z_drj 阅读(23) 评论(0) 推荐(0) 编辑
摘要: \(\texttt{Problem Link}\) 简要题意 在一个字符串 \(s\) 中,对于每个后缀,任意删掉一些相邻的相同的字符,使得字符串字典序最小。 注意:删掉之后拼起来再出现的相邻相同字符不能够删除。 思路 倍增好题。 发现存在局部最优解(最优子结构),并且可以转移到其它结点,可以考虑使 阅读全文
posted @ 2024-03-31 18:26 Z_drj 阅读(16) 评论(0) 推荐(1) 编辑
摘要: \(\texttt {Problem Link}\) 简要题意 题目很清楚。 分析 定理 两个人中左边的人一直向右运动,和两人向中间走所用的步数相同 证明 假设有两组人为 \(a_l , a_r , b_l , b_r (a_l < a_r , b_l < b_r)\)。 \(\textrm{I}. 阅读全文
posted @ 2024-03-14 21:09 Z_drj 阅读(13) 评论(0) 推荐(1) 编辑
摘要: Problem Link 简要题意 翻译很清楚。 思路 提供一种简单直接的思路。 可以发现最多会操作 \(n\) 次。 那么就可以每次直接枚举切的高度 \(h\),检查更改是否超过 \(k\),之后暴力修改这一段,然后重复以上步骤。 但是直接这样做是 \(\mathcal{O}(n^3)\)。 发现 阅读全文
posted @ 2024-03-14 21:09 Z_drj 阅读(21) 评论(0) 推荐(1) 编辑
摘要: Problem Link 简要题意 把一个数不断减一直到变成零,每个数位变化一次需要一秒。 比如 \(300\) 变成 \(299\) 需要 \(3\) 秒。 求把一个数变成零要多少秒。 思路 对于每一位分开讨论它修改的次数发现。 把一个数 \(x\) 变成零的总次数其实就是 \(\sum \lim 阅读全文
posted @ 2024-03-14 21:07 Z_drj 阅读(5) 评论(0) 推荐(1) 编辑