06 2020 档案

摘要:题目 点这里看题目。 分析 看到 n 很小,限制条件又这么复杂,显然可以直接容斥。 我们实际上只需要保证每个公司都有边可以修建(树的性质保证最终每个公司有且仅有一条边可以修建)。因此不难有容斥: \[ \begin{aligned} f(k):&\text{有}k\text{个公司没有边修建的方案数 阅读全文
posted @ 2020-06-30 14:04 crashed 阅读(138) 评论(0) 推荐(0)
摘要:方法 最小生成树上有一个重要的性质: \[ \begin{aligned} &w_e: e\text{的权}\\ &\text{Tree}(G): G\text{的生成树集合}\\ &f(T,w)\triangleq \sum_{e\in T}[w_e=w]\\ \Rightarrow& \fora 阅读全文
posted @ 2020-06-29 13:27 crashed 阅读(352) 评论(0) 推荐(0)
摘要:题目 点这里看题目 分析 关于组合数,这里有一个基本等式: \(\binom{n}{k}\times k=\binom{n-1}{k-1}\times n\) 尝试推广一下: \[ \begin{aligned} k^2\times\binom nk&=nk\times \binom{n-1}{k- 阅读全文
posted @ 2020-06-24 14:03 crashed 阅读(274) 评论(0) 推荐(1)
摘要:写在前面 一切都要基于分析。 ——— 沃兹·基硕德 知识图 我绝对不会告诉你这是我盗来的 基础算法 CDQ 分治 思想:离线,对序列进行分治。在回溯合并的时候,考虑分治左侧对右侧的贡献。可保证两维有序,再高维的就需要用数据结构维护。 实现:类似于归并排序。注意计算贡献部分和排序部分可能需要分开。 线 阅读全文
posted @ 2020-06-16 12:20 crashed 阅读(240) 评论(1) 推荐(2)
摘要:题目 点这里看题目。 分析 直接变换式子: \[ \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 阅读全文
posted @ 2020-06-15 21:53 crashed 阅读(140) 评论(0) 推荐(0)
摘要:题目 点这里看题目。 分析 感觉自己好蠢 假如我们有两棵树$T_1,T_2$,我们应该怎么计算出它们合并之后的最优解呢? 设最优情况下,$T_1$的所有内存段的集合为$M_1$,$T_2$的集合为$M_2$。我们可以知道,$M_1,M_2$中所有的元素都是不能再合并的(废话)。 考虑有$m_1,m_ 阅读全文
posted @ 2020-06-15 15:32 crashed 阅读(158) 评论(0) 推荐(0)
摘要:题目 点这里看题目。 题目简述: 给定$k,a,n,d$,满足$k\le 123, a,n,d\le 123456789$,求: \(\sum_{t=0}^n\sum_{j=1}^{a+td}\sum_{i=1}^ji^k\) 答案对$1234567891$(不用看了,是个质数)取模。 分析 一个神 阅读全文
posted @ 2020-06-15 14:35 crashed 阅读(170) 评论(0) 推荐(0)
摘要:题目 点这里看题目。 分析 不难看出一个暴力 DP : \(f(u,i)\):当$u$取$i$时,$u$的子树内的方案数。 转移显然: \(f(u,i)=\prod_{v\in son(u)}\sum_{j\le i} f(v,j)\) 再设$S(u,i)=\sum_{j\le i}f(u,j)$, 阅读全文
posted @ 2020-06-15 10:54 crashed 阅读(149) 评论(0) 推荐(0)
摘要:题目 点这里看题目。 分析 首先不难想到可以枚举递增的序列,最后在答案里面乘上$n!$,于是有$O(nk)$的暴力 DP 一枚: $f(i,j)$表示长度为$i$、最大值$\le j$的序列的贡献和。 转移显然: \(f(i,j)=j\times f(i-1,j-1)+f(i,j-1)\) 那么可以 阅读全文
posted @ 2020-06-14 22:34 crashed 阅读(386) 评论(0) 推荐(1)
摘要:什么是插值 在离散数据的基础上补插连续的函数,使得这条连续函数经过所有离散数据点,这个过程就叫插值。 其意义在于: 插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。 你猜对了,以上均来自百度百科的 “ 插值 ” 词条。 怎么理解这个东西呢?举个例子 阅读全文
posted @ 2020-06-14 12:58 crashed 阅读(5353) 评论(6) 推荐(17)
摘要:题目 点这里看题目。 分析 显然要先计算前缀和$s$。 同样地考虑按位计算贡献。假设当前枚举到了第$k$位,正在枚举第$i$个前缀和,设$x$的第$k$位为$b(x)$,后$k-1$位为$l(x)$。由于子区间和就是前缀和做差,我们就考虑什么情况下,前缀和$i$做差后在$k$位上为 1 。 若$b( 阅读全文
posted @ 2020-06-13 22:57 crashed 阅读(138) 评论(0) 推荐(0)
摘要:题目 比赛界面。 T1 数据范围明示直接$O(n^2)$计算,问题就在如何快速计算。 树上路径统计通常会用到差分方法。这里有两棵树,因此我们可以做“差分套差分”,在 A 树上对 B 的差分信息进行差分。在修改的时候,我们就会在 A 上 4 个位置进行修改,每次修改会涉及 B 上 4 个位置的差分修改 阅读全文
posted @ 2020-06-13 21:59 crashed 阅读(219) 评论(0) 推荐(0)
摘要:题目 比赛界面。 T1 不难想到,对于一个与$k$根棍子连接的轨道,我们可以将它拆分成$k+1$个点,表示这条轨道不同的$k+1$段。 那么,棍子就成为了点与点之间的边。可以发现,按照棍子连边之后,我们一定可以得到一些链。假设每条轨道的最后一段作为链头,查询实际上就是查询所在链的链头。 使用 LCT 阅读全文
posted @ 2020-06-12 23:31 crashed 阅读(171) 评论(0) 推荐(0)
摘要:题目 比赛界面。 T1 比较简单。容易想到是求鱼竿的最大独立集。由于题目的鱼竿可以被分割为二分图,就可以想到最大匹配。 尝试建边之后会发现边的数量不小,但联系题目性质会发现对于一条鱼竿,它会影响的垂直方向上的鱼竿一定是一个区间,因此再套一发线段树优化即可。 这里不建议写倍增优化,因为倍增的点是$O( 阅读全文
posted @ 2020-06-11 21:51 crashed 阅读(350) 评论(0) 推荐(0)
摘要:题目 点这里看题目。 分析 设前缀和$s_r=\sum_^r [S_i='1']$ 考虑满足要求的子串$(l,r]$的要求: \(\exists k\in N_+, r-l=k(s_r-s_l)\) 单独计算并不好算,考虑一个分块的优化。设置阈值$T$。 对于$1\le k\le T$的$k$,对要 阅读全文
posted @ 2020-06-08 21:18 crashed 阅读(176) 评论(0) 推荐(0)
摘要:题目 点这里看题目。 分析 先特判掉$K=2$的情况。 首先可以考虑到一个简单 DP : \(f(i)\):前$i$张牌的最大贡献。 转移可以$O(n^2)$地枚举区间众数,但它不存在决策单调性,众数查询也很难优化。 考虑另一种转移。我们对于$f(i)$,只取它结尾的点数的后缀 \(f(i)=\ma 阅读全文
posted @ 2020-06-06 23:44 crashed 阅读(183) 评论(0) 推荐(0)
摘要:Windows Only! 按照语法编写了这个“解释器”。 功能: 1.解释并运行一个后缀为 '.bf' 的文件; 2.提供错误指示,目前包括 RE 和 CE ; 3.提供 'help' 的指令帮助; 4.提供文件打开的功能; 源码: #include <conio.h> #include <win 阅读全文
posted @ 2020-06-03 19:12 crashed 阅读(372) 评论(0) 推荐(0)
摘要:题目 点这里看题目。 分析 最妙的地方在于,这道题其实是用一种数据结构模拟另一种数据结构! 我们需要维护深度和树的结构,以下对于每个操作进行分别讨论。 插入一个新节点 可以发现,这个新节点一定会成为自己的前驱或者后继中深度较大者的儿子。 然后可以更新深度和树的结构。 单旋最小值 发现树会有如下的变化 阅读全文
posted @ 2020-06-03 13:51 crashed 阅读(219) 评论(0) 推荐(0)
摘要:题目 点这里看题目。 分析 一类比较经典的分块优化暴力的思路。 问题实际上是查询,当$a\le Qa, b\le Qb$的所有边都插入了图之后,$u,v$是否连通,并且$u,v$的连通块里面是否同时存在$a=Qa$和$b=Qb$的边。 以上信息可以用并查集来维护。 问题的瓶颈是,如何快速地提取出需要 阅读全文
posted @ 2020-06-02 21:42 crashed 阅读(146) 评论(0) 推荐(0)
摘要:# 题目 点这里看题目。 分析 一个真正的树套树的题目。 大体思路非常简单,就是把从模板树上面复制下来的子树用一个点来代表,再插入到大树里面。接着就“正常”地维护一下倍增和深度,查询也跟“正常”的一样,先查 LCA ,再用深度做差。这种思路......形象地称为树套树。 什么,你说这是水题?开什么玩 阅读全文
posted @ 2020-06-01 19:22 crashed 阅读(274) 评论(2) 推荐(0)
摘要:题目 点这里看题目。 分析 分类讨论。 \(gcd(10,p)=1\) 此时,设$s(i)\(为\)[i,n]\(这个子串对应的数字,那么就可以得到,任何一个子串\)[i,j]$即为: \((s(i)-s(j+1))\times 10^{-(i-j)}\) 对于一个$\bmod p$为 0 的子串, 阅读全文
posted @ 2020-06-01 14:32 crashed 阅读(140) 评论(0) 推荐(0)
摘要:题目 点这里看题目。 分析 考虑将所有子序列画成$n\times n$的表的形式,表中的元素$(x,y)$就表示子序列$a[x:y]$的最小值。($x>y$则$(x,y)=0$) 那么,对于一个元素$a_i$,记它左边第一个小于它的位置为$lef(i)$,右边第一个小于等于它的位置为$rig(i)\ 阅读全文
posted @ 2020-06-01 12:42 crashed 阅读(163) 评论(0) 推荐(0)