Loading

上一页 1 2 3 4 5 6 ··· 8 下一页
摘要: 题意 输入 \(n\) 个数字,按照顺序将这 \(n\) 个数字插入 BST,在保证 BST 的结构不变的情况下,重排插入顺序,使得其字典序最小。 思路 这个题目很好地利用了笛卡尔树的性质。 我们考虑最后建出来的 BST 的中序遍历一定是 \(1, 2, 3, \cdots , n - 1, n\) 阅读全文
posted @ 2024-08-23 16:43 SunnyYuan 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 题目 思路 我们要充分利用笛卡尔树的性质: 一颗子树内的点表现在数组上都是连续的; 一颗子树内的点的大小都大于等于子树跟的数值大小。 所以我们建出笛卡尔树,用 dfs 求出以每个点为子树的子树大小 \(sz_i\),那么对于这个高度 \(h_i\) 来说,其子节点的高度比它大,所以可以拓展开来,面积 阅读全文
posted @ 2024-08-23 10:56 SunnyYuan 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 笛卡尔树 定义 笛卡尔树每个节点有两种属性,一种是键值,一种是优先级。 一般将位置作为键值,维护 BST 的性质,这样其中序遍历一定为 \(1, 2, 3, \cdots , n - 1, n\)。 一般将数值看作优先级,维护堆的性质。 构建思路 维护一个单调栈,表示现在的右链长度。 我们将数组从前 阅读全文
posted @ 2024-08-23 10:39 SunnyYuan 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 题意 在一个数组中选择 \(k\) 个长度为 \([l, r]\) 的序列,对每个序列求和,使每个序列的和的和最大。 思路 首先,我们可以将序列之和转化为前缀和,如果固定左端点 \(l\),那么我们只需要在 \([l + len_l, l + len_r]\) 中寻找最大的右端点,减去 \(sum[ 阅读全文
posted @ 2024-08-18 15:08 SunnyYuan 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 这篇文章主要讲一下问什么要二分以后还要 check(l - 1),以及怎么找距离小于等于 \(k\) 的边的数量。 题目 给定 \(n\) 个点,求出任意两个点的曼哈顿距离的集合的前 \(k\) 大。 思路 我们先将曼哈顿距离转化为切比雪夫距离:我们知道形如 \((x, y)\) 点之间的曼哈顿距离 阅读全文
posted @ 2024-08-13 19:55 SunnyYuan 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 换根树形 DP 描述 当不同的结点作为根结点时,dp 的结果不一样,若枚举每一个结点为根结点再 \(DP\),时间复杂度会很高。这种情况下,使用换根 DP 处理相邻两个结点之间的贡献,达到换根的效果。 实现步骤 任选一个点进行 DP,得到 \(dp[i]\)。 \(f[1] = dp[1]\),其中 阅读全文
posted @ 2024-08-13 19:21 SunnyYuan 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 题意 \(n\) 个点,\(m\) 个询问。 给你一棵树的括号序列,输出它的直径。 有 \(m\) 次询问,每次询问表示交换两个括号,输出交换两个括号后的直径(保证每次操作后都为一棵树) 输出共 \(m + 1\) 行。 \(3 \le n \le 100\,000,1 \le q \le 100\ 阅读全文
posted @ 2024-08-13 16:52 SunnyYuan 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 题意 给定 \(n\) 个点,求出一个点使得每个点到这个点的切比雪夫距离之和最小。 思路 首先,我们可以把题目中的切比雪夫距离转化为曼哈顿距离,因为我们知道形如 \((x, y)\) 点之间的曼哈顿距离等于 \((x + y, x - y)\) 点之间的切比雪夫距离,\((x, y)\) 点之间的切 阅读全文
posted @ 2024-08-13 11:52 SunnyYuan 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 题意 给定 \(n\) 个点的树,有边权。将 \(n\) 个点染成 \(m\) 种颜色,其中 \(1\) 号颜色必须染色 \(k\) 个结点,且 \(1\) 号结点必须染成 \(1\) 号颜色。剩下的 \(m - 1\) 中颜色分别至少出现 \(1\) 次。 一条边的两个结点染色相同的时候,贡献边权 阅读全文
posted @ 2024-08-12 11:23 SunnyYuan 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 题意 点击查看题目 题目描述 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习。现在有 \(N\) 门功课,每门课有个学分,每门课有一门或没有直接先修课(若课程 a 是课程 b 的先修课即只有学完了课程 阅读全文
posted @ 2024-08-12 11:19 SunnyYuan 阅读(6) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 8 下一页