06 2020 档案

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

点击右上角即可分享
微信分享提示