10 2021 档案
摘要:【题意】 有一棵n个节点的数,定义f(i,j)为只保留编号为i-j的点时连通块个数 求$\sum_{i=1}^{n}\sum_{j=i}^{n}f^k(i,j)$ 对$1e9+7$取模 【分析】 首先我们需要发现,当图是一个树/森林时,连通块个数=点数-边数 所以我们需要计算的就是当前l-r编号内的
阅读全文
摘要:【题意】 有 n 名男生和 n 名女生要排成一列。女生用 0 表示,男生用 1 表示。当前队列中已经站好了 m 位同学,现在剩下的 n−m 个同学要补到队列当中。这些同学可以站到队列中的任意位置,但是队列中原本的 m 个同学的相对位置不能发生改变。 此外,还有一个规定:对于每一个同学,他右边男生的数
阅读全文
摘要:【题意】 题目链接 【分析】 很显然,如果我们能够求出f[0...N]和g[0...N]分别表示国内/外有i个停机坪时,最多的停靠飞机数量,那么max{f[i]+g[n-i]}就是答案 现在考虑如何取求f和g 我们考虑每次贪心的把新的一架飞机停在编号尽可能小的停机坪上,这样我们从前到后走一遍,借助优
阅读全文
摘要:【题意】 给一个树,求一个哈密顿路径,使得距离最大 【分析】 考虑之前的一道求点对最大和的题目 采取之前的思路,考虑每个边(u,v)的贡献都是min(size[v],n-size[v])那么我们只需要在之前的路径上减去一条边即可 这个边尽可能小,但是要保证在我们构造的解的路径上 这里我们需要观察到这
阅读全文
摘要:【题意】 求在一棵树上,选取的每一对点之间的路径的和的最大值和最小值 【分析】 先考虑最小值: 我们希望每个边出现的次数尽量少,所以考虑u的儿子v子树内有偶数个节点,那么就一定可以内部消化不用走(u,v) 反之如果为偶数,那么(u,v)就不得不走一次 考虑按照这样的方式一定能构造出一组走法 考虑最大
阅读全文
摘要:【题意】 求一个字符串的num数组,表示1-i的即使前缀也是后缀且不重叠的串的个数 【分析】 考虑不断跳nxt数组,如nxt[i],nxt[nxt[i]].... 直到跳到长度小于i的一半的时候开始计数那么就得到了num数组 可是这样做的最坏时间复杂度仍然是$O(n^2)$,继续考虑优化,即减少重复
阅读全文
摘要:【题意】 给定一个字符串,q次询问l-r的最短循环节 【分析】z 显然,循环节是len的因子,所以我们可以通过枚举因子的方式来判断 这里,我们筛素数的同时,记录i的最小质因子min_fac[i],然后继续把i作为一个因数后,继续分解i/min_fac[i] 然后这里判断长度为j的是不是循环节的时候,
阅读全文
摘要:【题意】 【分析】 考虑把字符串建立在一个Trie树上,对应操作如下: 1.查看是否有这个儿子,没有就新建一个节点 2.向上跳到fa节点 3.当前节点标记为第i个字符串的末尾 4.标记为不可通配符也就是说最长公共前缀限制到这一位之前,所以所有的删除操作的min-1位置为公共前缀的最大值,撤销就相当于
阅读全文
摘要:【题意】 求基环树中删去一条边得到的生成树中的直径最小值 【分析】 显然,删去的一定是环上的边才能得到生成树 然后,我们把环拆成链,得到$a_1,a_2,...,a_k$ 求出以$a_i$为根的树中的最大深度$dep_i$ 然后考虑生成树的直径有可能有以下几种情况: 1.最大深度在某个树中,直接跑一
阅读全文
摘要:【题意】 【分析】 首先,我们可以得到以下结论: 1.将一个数修改为从未出现过的数字一定不优 2.修改第二次出现的数一定不如修改第一次出现的数优 有了以上两个结论,我们就可以进行恶心的分类讨论了 【代码】 #include<bits/stdc++.h> using namespace std; ty
阅读全文
摘要:【题意】 【分析】 显然这是一个树形的结构,我们可以发现每次连接两个操作就相当于两个子树的合并,而一个点的子树的部分一定要小于等于这个点,概率为2/3 我们可以先将整个树结构离线建立起来,然后用dfs序来将子树转换成区间,然后利用线段树解决这个问题 注意:要用vector,链式前向星的顺序是反的!
阅读全文
摘要:【题意】 给定一个长度为n的文章(小写字母),和m个不合法单词,修改文章中每个字母都有$a_i$的代价,问要文章中不存在不合法的单词,最小代价是多少 数据范围:$n\leq2*10^5,m\leq10$ 【分析】 首先,我们可以预处理出来每个位置作为结尾,不包含任何不合法单词的最长的区间pos[i]
阅读全文

浙公网安备 33010602011771号