06 2020 档案
摘要:题目 点这里看题目。 分析 看到 n 很小,限制条件又这么复杂,显然可以直接容斥。 我们实际上只需要保证每个公司都有边可以修建(树的性质保证最终每个公司有且仅有一条边可以修建)。因此不难有容斥: \[ \begin{aligned} f(k):&\text{有}k\text{个公司没有边修建的方案数
阅读全文
摘要:方法 最小生成树上有一个重要的性质: \[ \begin{aligned} &w_e: e\text{的权}\\ &\text{Tree}(G): G\text{的生成树集合}\\ &f(T,w)\triangleq \sum_{e\in T}[w_e=w]\\ \Rightarrow& \fora
阅读全文
摘要:题目 点这里看题目 分析 关于组合数,这里有一个基本等式: 尝试推广一下: \[ \begin{aligned} k^2\times\binom nk&=nk\times \binom{n-1}{k-
阅读全文
摘要:写在前面 一切都要基于分析。 ——— 沃兹·基硕德 知识图 我绝对不会告诉你这是我盗来的 基础算法 CDQ 分治 思想:离线,对序列进行分治。在回溯合并的时候,考虑分治左侧对右侧的贡献。可保证两维有序,再高维的就需要用数据结构维护。 实现:类似于归并排序。注意计算贡献部分和排序部分可能需要分开。 线
阅读全文
摘要:题目 点这里看题目。 分析 直接变换式子: \[ \begin{aligned} h_j\le h_i+p_i-\sqrt{|i-j|} & \Rightarrow p_i\le h_j+\sqrt{|i-j|}-h_i\\ & \Rightarrow p_i=\lceil\max\{h_j+\sq
阅读全文
摘要:题目 点这里看题目。 分析 感觉自己好蠢 假如我们有两棵树,我们应该怎么计算出它们合并之后的最优解呢? 设最优情况下,的所有内存段的集合为,的集合为。我们可以知道,中所有的元素都是不能再合并的(废话)。 考虑有$m_1,m_
阅读全文
摘要:什么是插值 在离散数据的基础上补插连续的函数,使得这条连续函数经过所有离散数据点,这个过程就叫插值。 其意义在于: 插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。 你猜对了,以上均来自百度百科的 “ 插值 ” 词条。 怎么理解这个东西呢?举个例子
阅读全文
摘要:题目 点这里看题目。 分析 显然要先计算前缀和。 同样地考虑按位计算贡献。假设当前枚举到了第位,正在枚举第个前缀和,设的第位为,后位为。由于子区间和就是前缀和做差,我们就考虑什么情况下,前缀和做差后在位上为 1 。 若$b(
阅读全文
摘要:题目 比赛界面。 T1 数据范围明示直接计算,问题就在如何快速计算。 树上路径统计通常会用到差分方法。这里有两棵树,因此我们可以做“差分套差分”,在 A 树上对 B 的差分信息进行差分。在修改的时候,我们就会在 A 上 4 个位置进行修改,每次修改会涉及 B 上 4 个位置的差分修改
阅读全文
摘要:题目 比赛界面。 T1 不难想到,对于一个与根棍子连接的轨道,我们可以将它拆分成个点,表示这条轨道不同的段。 那么,棍子就成为了点与点之间的边。可以发现,按照棍子连边之后,我们一定可以得到一些链。假设每条轨道的最后一段作为链头,查询实际上就是查询所在链的链头。 使用 LCT
阅读全文
摘要:题目 比赛界面。 T1 比较简单。容易想到是求鱼竿的最大独立集。由于题目的鱼竿可以被分割为二分图,就可以想到最大匹配。 尝试建边之后会发现边的数量不小,但联系题目性质会发现对于一条鱼竿,它会影响的垂直方向上的鱼竿一定是一个区间,因此再套一发线段树优化即可。 这里不建议写倍增优化,因为倍增的点是$O(
阅读全文
摘要:题目 点这里看题目。 分析 先特判掉的情况。 首先可以考虑到一个简单 DP : :前张牌的最大贡献。 转移可以地枚举区间众数,但它不存在决策单调性,众数查询也很难优化。 考虑另一种转移。我们对于,只取它结尾的点数的后缀 \(f(i)=\ma
阅读全文
摘要:Windows Only! 按照语法编写了这个“解释器”。 功能: 1.解释并运行一个后缀为 '.bf' 的文件; 2.提供错误指示,目前包括 RE 和 CE ; 3.提供 'help' 的指令帮助; 4.提供文件打开的功能; 源码: #include <conio.h> #include <win
阅读全文
摘要:题目 点这里看题目。 分析 最妙的地方在于,这道题其实是用一种数据结构模拟另一种数据结构! 我们需要维护深度和树的结构,以下对于每个操作进行分别讨论。 插入一个新节点 可以发现,这个新节点一定会成为自己的前驱或者后继中深度较大者的儿子。 然后可以更新深度和树的结构。 单旋最小值 发现树会有如下的变化
阅读全文
摘要:题目 点这里看题目。 分析 一类比较经典的分块优化暴力的思路。 问题实际上是查询,当的所有边都插入了图之后,是否连通,并且的连通块里面是否同时存在和的边。 以上信息可以用并查集来维护。 问题的瓶颈是,如何快速地提取出需要
阅读全文
摘要:# 题目 点这里看题目。 分析 一个真正的树套树的题目。 大体思路非常简单,就是把从模板树上面复制下来的子树用一个点来代表,再插入到大树里面。接着就“正常”地维护一下倍增和深度,查询也跟“正常”的一样,先查 LCA ,再用深度做差。这种思路......形象地称为树套树。 什么,你说这是水题?开什么玩
阅读全文
摘要:题目 点这里看题目。 分析 考虑将所有子序列画成的表的形式,表中的元素就表示子序列的最小值。(则) 那么,对于一个元素,记它左边第一个小于它的位置为,右边第一个小于等于它的位置为$rig(i)\
阅读全文