合集-题解
摘要:原题 简化题意:有一棵 \(n\) 个点的树, \(q\) 组询问,每次询问回答两点间的距离。 令 \(dis[i][j]\) 表示 \(i\) 到 \(j\) 的距离,根节点为 \(rt\) ,则有 \(dis[i][j]=dis[rt][i]+dis[rt][j]-2×dis[rt][lca(i
阅读全文
摘要:题目传送门 题意 有 \(n\) 个城市,\(b\) 个投票箱,第 \(i\) 个城市有 \(a_i\) 人,每个人均有一张票,将 \(b\) 个投票箱分给 \(n\) 个城市,每个城市的票分摊在投票箱里,求所有城市中最多的投票箱中票的最小值(多组数据)。 解法 最大值最小,考虑二分答案。若二分出的
阅读全文
摘要:题目传送门 题意 在一个无向图上选择尽量少的点涂黑,使得删除任意一个点后,每个连通分量里都至少有一个黑点(多组数据)。 正文 观察题意,发现这是个 Tarjan 求点双连通分量的板子。 考虑在求点双连通分量的时候把割点顺便求出来,令第 \(i\) 个点双连通分量的大小为 \(size_i\),然后进
阅读全文
摘要:题目传送门 前置知识 前缀和 & 差分 解法 令 \(sum_k=\sum\limits_{i=1}^{k} a_k\)。考虑分别输入 \(sum_2 \sim sum_n\),故可以由于差分知识得到 \(a_i=sum_i-sum_{i-1}(3 \le i \le n)\),接着输入 \(a_2
阅读全文
摘要:题目传送门 前言 本题样例有问题,如果想要样例可以去 vjudge 上。 本题提交后可能会出现 UKE ,建议前往 link 提交,而且本篇题解中所提供的代码也为 link 代码。 前置知识 Kruskal 重构树 | 最近公共祖先 简化题意 给定一个 \(N\) 个点 \(M\) 条边的有向图,共
阅读全文
摘要:题目传送门 前言 中文题目可以看 link 。 前置知识 Kruskal 重构树 | 最近公共祖先 简化题意 给定一个 \(N\) 个点 \(M\) 条边的有向图,共有 \(S\) 次询问,每次询问从 \(L\) 到 \(H\) 所有的路径中最小的权值的最大值(多组数据)。 本题即最大瓶颈路问题。
阅读全文
摘要:题目传送门 前置知识 单调栈 简化题意 在一个 \(n \times n\) 的正方形内找到最大的由 \(0\) 组成的子矩形的面积。 解法 令 \(f_{i,j}(1 \le i,j \le n)\) 表示从 \((1,j)\) 到 \((i,j)\) 中以 \((i,j)\) 结尾的均为 \(0
阅读全文
摘要:题目传送门 前置知识 快速幂 解法 推式子: \(\begin{aligned} Z_n+Z_{n-1}-2Z_{n-2}&=(Z_n-Z_{n-2})+(Z_{n-1}-Z_{n-2}) \\ &=(S_n+Q_n-S_{n-2}-Q_{n-2})+(S_{n-1}+Q_{n-1}-S_{n-2}
阅读全文
摘要:题目传送门 简化题意 有 \(t\) 组询问,每次询问是否能从 \(1 \sim n\) 中选择 \(k\) 个数使得它们的和为 \(x\)。 解法 考虑临界情况,从 \(1 \sim n\) 中选择最小的 \(k\) 个数时和为 \(\sum\limits_{i=1}^k i=\dfrac{(k+
阅读全文
摘要:题目传送门 前置知识 最大公约数 | 裴蜀定理 简化题意 给定一个长度为 \(n\) 的序列 \(a\),求 \((\sum\limits_{i=1}^{n}d_ia_i) \bmod k\) 一共会有多少种不同的取值及取值的所有情况,其中对于每一个 \(i(1 \le i \le n)\) 均有
阅读全文
摘要:题目传送门 前置知识 强连通分量 | 最短路 解法 考虑用 Tarjan 进行缩点,然后跑最短路。 缩点:本题的缩点有些特殊,基于有向图缩点修改而得,因为是无向图,所以在 Tarjan 过程中要额外记录一下从何处转移过来,防止在同一处一直循环。 基环树上找环还有其他方法,详见 luogu P8655
阅读全文
摘要:题目传送门 前言 本题解内容均摘自我的 Tarjan 学习笔记 。 解法 Tarjan 与无向图 无向图与割点(割顶) 在一个无向图中,不存在横叉边(因为边是双向的)。 一个无向图中,可能不止存在一个割点。 割点(割顶):在一个无向图中,若删除节点 \(x\) 以及所有与 \(x\) 相关联的边之后
阅读全文
摘要:题目传送门 前置知识 线段树 解法 第一眼感觉和 luogu P1083 [NOIP2012 提高组] 借教室 很像。本题同样采用线段树维护,\(sum_{l,r}(1 \le l \le r \le 10^6)\) 表示从 \(l \sim r\) 时刻内骑士拜访的总时间,\(maxx_{l,r}
阅读全文
摘要:题目传送门 前置知识 线段树 解法 第一眼感觉和 luogu P1083 [NOIP2012 提高组] 借教室 很像。本题同样采用线段树维护,\(sum_{l,r}(1 \le l \le r \le 10^6)\) 表示从 \(l \sim r\) 时刻内骑士拜访的总时间,\(maxx_{l,r}
阅读全文
摘要:题目传送门 前置知识 乘法逆元 | 排列组合 解法 简单的排列组合。从 \(n\) 个学校中选出 \(a\) 个学校,共有 \(\dbinom{n}{a}\) 种不同的方案数。选出的 \(a\) 个学校中每所学校再从 \(b\) 个人中选出 \(d\) 个人,共有 \(\dbinom{b}{d}^a
阅读全文
摘要:题目传送门 前置知识 等比数列求和公式 | 乘法逆元 解法 设 \(lena\) 表示 \(a\) 的长度。 首先,若一个数能被 \(5\) 整除,则该数的末尾一定为 \(0\) 或 \(5\)。故考虑枚举 \(a\) 中所有的 \(0\) 和 \(5\) 的下标,设此下标后面有 \(x\) 个数字
阅读全文
摘要:题目传送门 前置知识 扩展欧拉定理 解法 本题幂塔是有限层的,这里与 luogu P4139 上帝与集合的正确用法 中的无限层幂塔不同,故需要在到达递归边界 \(n+1\) 时进行特殊处理,对于处理 \(\varphi(p)\) 在递归过程中等于 \(1\) 的情况两题基本一致。 回忆扩展欧拉定理中
阅读全文
摘要:题目传送门 前置知识 扩展欧拉定理 解法 本题幂塔是有限层的,这里与 luogu P4139 上帝与集合的正确用法 中的无限层幂塔不同,故需要在到达递归边界 \(n+1\) 时进行特殊处理,对于处理 \(\varphi(p)\) 在递归过程中等于 \(1\) 的情况两题基本一致。 回忆扩展欧拉定理中
阅读全文
摘要:题目传送门 前置知识 扩展欧拉定理 解法 直接对 \(a\) 和 \(b^c\) 分讨,跑一遍扩展欧拉定理就行了。 另外由于本题的特殊规定 \(0^0=1\),故需要在当 \(a=0\) 时,对 \(b^c\) 进行判断。手模几组样例,发现结论挺显然的。 代码 #include<bits/stdc+
阅读全文
摘要:题目传送门 前置知识 二分答案 | 并查集 解法 对条件的合法性判断其他题解已经讲得很明白了,这里不再赘述。这里主要讲一下用并查集实现黑白染色问题。 以下内容称被覆盖为黑色,不被覆盖为白色。 本题因为是单向染色,即从白到黑,故可类似 luogu P1840 Color the Axis 和 D 的并
阅读全文
摘要:题目传送门 前置知识 贪心 | 构造 解法 对于任意一个未加入序列 \(P\) 的数 \(x<A_{i}(1 \le i \le k-1)\),如果其放在了 \(A_{i}\) 的前面,会导致最长上升子序列长度加一,从而不符合题目要求。因此我们需要把 \(x\) 放在 \(A_{i}\) 后面,同理
阅读全文
摘要:题目传送门 前置知识 圆排列 解法 \(\dfrac{Q_{n}^{\frac{n}{2}}Q_{\frac{n}{2}}^{\frac{n}{2}}}{A_{2}^{2}}\) 即为所求。 同时因为 \(n \le 20\) 和没有模数,所以不需要处理逆元,暴力算即可。 代码 #include<b
阅读全文
摘要:题目传送门 前置知识 贪心 | 构造 解法 从贪心的角度分析,最小的 \(\operatorname{mex}\) 仅会与长度最小的区间有关;另外为使得 \(\operatorname{mex}\) 最大,当 \(\operatorname{mex}\) 等于区间长度的时候即为所求。记 \(ans\
阅读全文
摘要:题目传送门 前置知识 大步小步算法 解法 递推式为 \(x_{n}=(ax_{n-1}+b) \bmod p\),发现可以统一消去 \(\bmod p\) ,只在最后参与计算。以下过程省去模运算。 当 \(x_{0}=t\) 时,则 \(n=0\) 即为所求。 当 \(a=0,x_{0} \ne t
阅读全文
摘要:题目传送门 前置知识 单调栈 解法 令 \(f_{i,j}(1 \le i \le n,1 \le j \le m)\) 表示从 \((1,j)\) 到 \((i,j)\) 中以 \((i,j)\) 结尾的均为 F 的子串长度,即 \((i,j)\) 上面可延伸的最大距离(子矩形的长)。 用单调栈的
阅读全文
摘要:题目传送门 前置知识 欧拉函数 解法 欧拉反演,简单地推下式子即可。 \(\begin{aligned}\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{n} \gcd(i,j)^{2} &=\sum\limits_{i=1}^{n} \sum\limits_{j=1
阅读全文
摘要:题目传送门 前置知识 前缀函数与 KMP 算法 解法 考虑将 \(S\) 翻转后得到 \(S'\),然后就转化为求 \(S'\) 的一个最长子串使得其是 \(S\) 的前缀。使用 KMP 求解即可。 代码 #include<bits/stdc++.h> using namespace std; #d
阅读全文
摘要:题目传送门 前置知识 前缀函数与 KMP 算法 解法 经检验 样例,我们发现 \(|S|k\) 并不是最优答案。 考虑利用 luogu P4391 [BOI2009] Radio Transmission 无线传输 结论的逆命题,首先必须要有一个完整的 \(S\),然后将 \(|S|-next_{S
阅读全文
摘要:题目传送门 前置知识 二分答案 解法 观察到要使价值最小值最大,考虑二分答案。 二分所能得到的华丽度,基本与 luogu P1182 数列分段 Section II 一致。具体地,依次枚举 \(1 \sim n\) 对距离和画的价值进行判定,注意对当前是第一次展出时进行特判。 代码 #include
阅读全文
摘要:题目传送门 前置知识 Meet in the middle 解法 非正解 当成超大背包来做,暴力枚举每个数是否进行相加。 时间复杂度为 \(O(2^{n})\)。 ll p[50],ans=0; void dfs(ll x,ll n,ll m,ll worth) { if(x==n+1) { if(
阅读全文
摘要:题目传送门 前置知识 前缀函数与 KMP 算法 | 状压 DP 解法 由于 \(\sum\limits_{i=1}^{n} |S_{i}|\) 极大且不需要记录路径,所以 luogu P2322 [HNOI2006] 最短母串问题 的枚举所有可能的字符串 \(T\) 进行判断不可做。 设 \(f_{
阅读全文
摘要:题目传送门 前置知识 概率 DP | 树形 DP |RMQ 解法 观察到区间只有相离或包含关系,类似线段树的管辖区间,考虑将其构成树形关系。为方便代码书写,将原来的森林构成一棵树,即增加一个区间 \(l_{q+1}=1,r_{q+1}=n,p_{q+1}=0\)。 由于对于一个区间 \([l,r]\
阅读全文
摘要:题目传送门 前置知识 背包 DP 解法 观察到 \(w\) 极大,若使用正常的背包空间会爆炸。 依据 AT_dp_e Knapsack 2 的经验,考虑将背包“反”着用。设 \(f_{i,j}\) 表示到第 \(i\) 棵树时一共召唤了 \(j\) 只小鸟时剩余的最大魔力值,状态转移方程为 \(f_
阅读全文
摘要:题目传送门 (Easy Version) | 题目传送门 (Hard Version) 前置知识 博弈论 解法 CF1628D1 Game on Sum (Easy Version) 设 \(x_{i}\) 表示第 \(i\) 轮时 Alice 选择的数。 设 \(f_{i,j}\) 表示已经进行了
阅读全文
摘要:题目传送门 前置知识 博弈论 解法 由于本题是 CF1628D1 Game on Sum (Easy Version) 的扩展,故先从 CF1628D1 Game on Sum (Easy Version) 讲解。 CF1628D1 Game on Sum (Easy Version) 设 \(x_
阅读全文
摘要:题目传送门 前置知识 概率 DP 解法 设 \(f_{i}\) 表示有 \(i\) 张数字牌没进入 \(S\),即 \(S\) 中只有 \(n-i\) 张数字牌时的期望轮数,有 \(f_{i}= \frac{i}{i+m}f_{i-1}+ \frac{m}{i+m}(f_{i}+1)\),解得 \(
阅读全文
摘要:题目传送门 前置知识 树形 DP 解法 将 \(a_{i}\) 向 \(i\) 连一条有向边,这样就形成了基环外向树森林。 基环外向树森林内每棵基环外向树是相互独立的,需要单独处理。 对于每棵基环外向树,任取环上一点 \(x\),断开 \(x\) 到 \(fa_{x}\) 的有向边,外向树就变成了一
阅读全文
摘要:题目传送门 前置知识 动态规划基础 解法 设 \(f_{i,j}\) 表示 \(1 \sim i\) 的全排列中存在 \(j\) 个逆序对的方案数,状态转移方程为 \(f_{i,j}=\sum\limits_{k=j-\min(i-1,j)}^{j}f_{i-1,k}=\sum\limits_{k=
阅读全文
摘要:题目传送门 前置知识 后缀数组简介 解法 对于一个后缀 \(s_{sa_{i} \sim n}\),它产生了 \(n-sa_{i}+1\) 个前缀,其长度和为 \(\frac{(n-sa_{i}+1)(n-sa_{i}+2)}{2}\);和 \(s_{sa_{i-1} \sim n}\) 相比产生了
阅读全文
摘要:题目传送门 前置知识 后缀数组简介 解法 一个子串出现至少 \(2\) 次等价于有至少连续 \(2\) 个后缀以这个子串作为公共前缀。 进行一次后缀排序后,有 \(\max\limits_{i=1}^{|s|} \{ height_{i} \}\) 即为所求。 代码 #include<bits/st
阅读全文
摘要:题目传送门 前置知识 矩阵加速递推 解法 直接递推显然不可做,考虑矩阵加速递推。 令 \(F_{n}=\begin{bmatrix} f_{n} & f_{n+1} & f_{n+2} & \dots & f_{n+d-1} \end{bmatrix}\),容易有 \(\begin{aligned}
阅读全文
摘要:题目传送门 前置知识 欧拉序 | 区间 DP | 乘法原理 解法 颜色序列本质上是欧拉序,故考虑区间 DP。 设 \(f_{l,r}\) 表示 \([l,r]\) 对应的二叉树的个数,状态转移方程为 \(f_{l,r}=\begin{cases} 1 & l=r \\ [s_{l}=s_{r}] \
阅读全文
摘要:题目传送门 简化题意 给定 \(H,n\) 和一个长度为 \(n\) 的序列 \(d\),求一个最小的 \(m\) 使得 \(H+\sum\limits_{i=1}^{m}d_{(i-1) \bmod n+1} \le 0\)。 解法 将式子移项后得到 \(\sum\limits_{i=1}^{m}
阅读全文
摘要:题目传送门 前置知识 树链剖分 | 线段树 解法 树剖换根,子树查询板子。 类似 换根 DP 的思路,我们发现换根后仅有祖先、子树、深度等会随祖先的变化而变化。 设 \(rt_{i}\) 表示第 \(i\) 次操作的树根,\(x_{i}\) 表示第 \(i\) 次操作的节点。接着进行大力分讨。 当
阅读全文
摘要:题目传送门 前置知识 无旋 treap 解法 与 luogu P3391 【模板】文艺平衡树 不同的是本题翻转后需要放到整个序列的末尾。 由于需要翻转后放到末尾,故无旋 Treap 在维护文艺平衡树的过程中合并时跳着合并即可。 代码 #include<bits/stdc++.h> using nam
阅读全文
摘要:题目传送门 前置知识 树链剖分 | 线段树 解法 树链剖分后维护一个支持区间修改,单点查询的线段树即可。 也可以树上差分,同 146. DFS 序 3,树上差分 1 的 \(1,2\) 操作,时间复杂度比树链剖分更优。 代码 #include<bits/stdc++.h> using namespa
阅读全文
摘要:题目传送门 前置知识 高斯消元法解异或方程组 | 乘法原理 解法 把开关的相互影响关系转化成异或,然后就转化成了异或方程组,高斯消元求解即可。 判断是否存在解的过程同 luogu P2455 [SDOI2006] 线性方程组 。 由于自由元仅能取 \(0/1\),故总方案数为 \(2\) 的自由元数
阅读全文
摘要:题目传送门 前置知识 二叉搜索树 & 平衡树 解法 笔者写这篇题解的时候题面应该是出锅了,建议去看 Acwing 的题面。 第一问同 luogu P2234 [HNOI2002] 营业额统计 ,平衡树维护前驱、后继(非严格意义上的)求出差值后取 \(\min\) 即可;第二问用 map 实现一个映射
阅读全文
摘要:题目传送门 前置知识 二项式反演 | 乘法原理 | 扩展欧拉定理 | 容斥原理 解法 考虑二项式反演。 设 \(f_{m}\) 表示交集中恰好有 \(m\) 个元素的方案数,\(g_{m}\) 表示交集中至少有 \(m\) 个元素的方案数,即 \(g_{m}=\sum\limits_{i=m}^{n
阅读全文
摘要:题目传送门 前置知识 记忆化搜索 解法 本题中的得到是指目前的牌中包含所要求的牌,而不是目前的牌中恰好是所要求的牌。 设 \(f_{a,b,c,d,x,y}\) 表示已经抽了 \(a\) 张黑桃,\(b\) 张红桃,\(c\) 张梅花,\(d\) 张方块,大王/小王的使用状态为 \(x/y\) 时的
阅读全文
摘要:题目传送门 前置知识 树的遍历 解法 目前在 \(fa\) 节点时,搜到子节点 \(x\) 和其他子节点的概率是相等的(因为不需要管具体是哪个节点),均为 \(\frac{1}{2}\)。 设 \(f_{x}\) 表示 \(x\) 时间戳的期望值,状态转移方程为 \(f_{x}=1+f_{fa}+\
阅读全文
摘要:题目传送门 前置知识 STL 算法 解法 一个简单的结论:随着前缀长度的增长,出现的数字种类数每次只能增加 \(0\) 或 \(2\)。考虑构造时可以从这里下手。 一种构造方案是这样的:优先让数字种类数增加 \(2\),即先将原先没有出现过的数往前放;接着让数字种类数增加 \(0\),即后将原先出现
阅读全文
摘要:题目传送门 前置知识 权值树状数组及应用 解法 从贪心的角度分析,当小 K 有 \(x(x \ge k)\) 个同种糖果时,将其分给 \(k\) 个小朋友时尽可能平均发是最优情况,此时产生的愤怒值为 \(x-k\)。 那么,设出现次数 \(\ge k\) 的糖果分别为 \(b_{1},b_{2},b
阅读全文
摘要:题目传送门 前置知识 状压 DP | 条件概率 解法 观察到 \(n \le 20\),考虑状压枚举所有可能的状态。 令 \(A\) 表示恰好有 \(r\) 个人买了东西,\(B_{i}\) 表示第 \(i\) 个人买了东西。由条件概率 \(P(B_{i}|A)=\frac{P(AB_{i})}{P
阅读全文
摘要:题目传送门 前置知识 数位 DP | 同余 解法 同余的传递性:若 \(\begin{cases} a,b \in \mathbf{Z} \\ p,q \in \mathbb{N}^{*} \\ q \mid p \end{cases}\),则当 \(a \equiv b \pmod{p}\) 时有
阅读全文
摘要:题目传送门 前置知识 数位 DP | 记忆化搜索 解法 本题的提交在 luogu 上挂了,建议去原站或 Vjudge 上提交。 基础数位 DP,记录当前位置、已填的数码之和,接着记忆化搜索即可。 需要注意的是 \(0 \bmod d=0\),如果写得不太好看(未处理前导零)的话需要减去其贡献。 代码
阅读全文
摘要:题目传送门 前置知识 计数 DP | 排列组合 解法 正难则反,考虑求出总方案数和至少经过一个黑色格子的方案数,二者作差即为所求。 强制增加一个黑色格子 \((h,w)\),使得存在一条至少经过一个黑色格子的路径。 如果没有“不能移动到黑色格子中”的限制,那么就是一个简单的格路计数问题,方案数为 \
阅读全文
摘要:题目传送门 前置知识 计数 DP 解法 方案数统计同 luogu P2467 [SDOI2010] 地精部落,但部分写得不太好看的状态转移方程在本题中并不适用,但仍可借鉴其“离散化”思想。 考虑试填。 设 \(f_{i,j,0/1}\) 表示用 \(i\) 块不同的木板构成栅栏,其中最左边的木板的长
阅读全文
摘要:题目传送门 前置知识 单调栈 解法 容易有每个建筑物的宽度对答案没有影响,故可以将其宽度均看作 \(1\)。 在最优策略下,对于每张海报,其高度一定等于所覆盖的楼的最小高度。 单调栈维护最小高度,记录额外海报数量(与先前高度相等时可以少用一张海报)。 最终,用总张数 \(n\) 减去额外海报数量即可
阅读全文
摘要:题目传送门 前置知识 Tarjan 算法 | 最短路 解法 缩点后原图就成为了一个有向无环图,此时每个点最多被经过一次,故在求最长路的过程中可以将点权和边权混着转移。 上篇题解用拓扑实现查找两点间最长路的做法正确性不会证,遂写了份 Dijkstra 求最长路。 代码 #include<bits/st
阅读全文
摘要:题目传送门 前置知识 数位 DP | 记忆化搜索 解法 基础数位 DP,与 luogu P2657 [SCOI2009] windy 数 类似,记录当前位置、上一位填的数码,接着记忆化搜索即可。 需要注意的是有前导零时,此时不需要管相邻两位数字差的绝对值不超过 \(k\) 的限制。 代码 #incl
阅读全文
摘要:题目传送门 前置知识 一般的积性函数 | 数论分块 | 莫比乌斯反演 解法 令 \(n \le m\)。 考虑莫比乌斯反演,推式子,有 \(\begin{aligned} &\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}\operatorname{lcm}(i,
阅读全文
摘要:题目传送门 前置知识 线段树 解法 需要维护区间信息,考虑使用线段树维护。 预处理出 \(\overline{xx \dots x}\),其中 \(x \in \{1,2,3,4,5,6,7,8,9 \}\),便于区间赋值。 然后就是普通的线段树板子了。 代码 #include<bits/stdc+
阅读全文
摘要:题目传送门 前置知识 线段树 | 树链剖分 解法 观察到要维护树上信息,且更改的呈链状,考虑进行树链剖分。 将边权转化成点权,钦定边权给了深度更深的那个点,注意更新时不能更新 \(\operatorname{LCA}\)。 区间赋值和单点查询用线段树维护即可。 代码 #include<bits/st
阅读全文
摘要:题目传送门 前置知识 CDQ 分治 | 权值树状数组及应用 解法 增加一维为 DFS 序,然后就转化成了三维偏序问题,可以使用 CDQ 分治求解。 此时等价于求 \(red_{j} \le red_{i},blue_{j} \le blue_{i},dfn_{i}<dfn_{j} \le out_{
阅读全文
摘要:题目传送门 前置知识 CDQ 分治 解法 单点修改区间查询,但值域巨大,考虑离散化掉 \(x\)。 时刻 \(t\) 仍很大,考虑将其作为 CDQ 分治的第一维,然后套个 CDQ 分治即可,注意及时清空桶数组。 代码 #include<bits/stdc++.h> using namespace s
阅读全文
摘要:题目传送门 前置知识 CDQ 分治 | 权值树状数组及应用 | 曼哈顿距离与切比雪夫距离的相互转化 解法 增加一维为时间戳,那么操作 \(1\) 等价于单点加。 曼哈顿距离直接跑 CDQ 分治,貌似不太可做,考虑转化为切比雪夫距离。 原曼哈顿坐标系中的点 \((x_{1},y_{1}),(x_{2}
阅读全文
摘要:题目传送门 前置知识 树链剖分 | 树的直径 | 最近公共祖先 | 并查集 解法 正着删边不太可做,考虑离线下来反着加边。 一个显而易见的结论:设点集 \(A\) 的直径的两个端点为 \(u_{1},v_{1}\),另一个点集 \(B\) 的直径的两个端点为 \(u_{2},v_{2}\),则 \(
阅读全文
摘要:题目传送门 前置知识 树的直径 | 最近公共祖先 | 并查集 解法 一个显而易见的结论:设点集 \(A\) 的直径的两个端点为 \(u_{1},v_{1}\),另一个点集 \(B\) 的直径的两个端点为 \(u_{2},v_{2}\),则 \(A \bigcup B\) 的直径端点一定是 \(\{
阅读全文
摘要:题目传送门 前置知识 珂朵莉树/颜色段均摊 | 树状数组 | 扫描线 解法 同 luogu P5524 [Ynoi2012] NOIP2015 充满了希望,询问时扫描线维护,树状数组维护时间戳(单点修改区间查询)即可。前者具体部分看我 luogu P5524 [Ynoi2012] NOIP2015
阅读全文
摘要:题目传送门 前置知识 可持久化线段树 解法 若区间内不存在绝对众数,直接保持这一段即可。 若存在绝对众数,贪心地想肯定要尽可能地把其分开还要限制出其他数使其不成为绝对众数。容易发现设绝对众数出现次数为 \(cnt\),取 \(cnt-1\) 个其他数和绝对众数配对最优。但可能其他数不够 \(cnt\
阅读全文
摘要:题目传送门 前置知识 树形 DP 解法 将 \(a_{i}\) 向 \(i\) 连一条有向边,这样就形成了基环外向树森林。 设 \(f_{x,0/1}\) 表示 \(x\) 不选/选时,以 \(x\) 为根的子树的最多选择个数,状态转移方程为 \(\begin{cases} f_{x,0}=\sum
阅读全文
摘要:题目传送门 前置知识 单调队列/单调栈优化 解法 在仓库 \(1\) 和 \(n\) 之间把环断开,然后复制一倍接在末尾,形成长度为 \(2n\) 的直线公路,即有 \(a_{i}=a_{i+n} (1 \le i \le n)\)。 对于原来环形公路上的任意两座仓库 \(i,j(1 \le j<i
阅读全文
摘要:题目传送门 前置知识 AC 自动机 解法 多模式串匹配考虑 AC 自动机。 令 \(f_{i,j}\) 表示前 \(i\) 个字符,当前运行到 AC 自动机的状态 \(j\) 时的最大得分。状态转移方程为 \(f_{i,k}=\max\limits_{k \in Son(j)} \{ f_{i-1,
阅读全文
摘要:题目传送门 前置知识 欧拉序 | 区间 DP | 乘法原理 解法 颜色序列本质上是欧拉序,故考虑区间 DP。 设 \(f_{l,r}\) 表示 \([l,r]\) 对应的二叉树的个数,状态转移方程为 \(f_{l,r}=\begin{cases} 1 & l=r \\ [s_{l}=s_{r}] \
阅读全文
摘要:题目传送门 前置知识 预设性 DP 解法 考虑统计每个数单独的贡献,然后进行预设性 DP。 设 \(f_{i,j}\) 表示当前填了 \([1,i]\) 时有 \(j\) 个连续段的最小权值,边界为 \(f_{0,0}=0\)。 对 \(i(i \ne s,i \ne e)\) 填入的位置进行分讨。
阅读全文
摘要:题目传送门 前置知识 可持久化线段树 | 前缀和 & 差分 解法 进行差分,区间查询转化成前缀和相减。 先将 \(\{ a \}\) 升序排序。 设当前询问的区间为 \([1,r]\),在 \(\{ a \}\) 中找到一个最大的 \(pos\) 使得 \(a_{pos} \le r\),则 \([
阅读全文
摘要:题目传送门 前置知识 点分治 | 树状数组 解法 维护点对信息,考虑点分治。 本题比 luogu P4149 [IOI2011] Race 多了个前缀查询 \(\max\)。套个支持单点修改、区间查询 \(\max\) 的数据结构即可。 直接线段树维护区间 \(\max\) 貌似会 TLE,换成树状
阅读全文
摘要:题目传送门 前置知识 动态树分治 | 动态开点线段树 | 标记永久化 解法 考虑动态点分治。 两种操作本质上是将 luogu P6329 【模板】点分树 | 震波 的操作互换了下,将原需支持单点修改、区间查询的数据结构换成需支持区间修改、单点查询的数据结构即可。 区间修改、单点查询的动态开点线段树可
阅读全文
摘要:题目传送门 前置知识 将动态问题转化为静态问题 | 树状数组 解法 先将英雄按 \(\{ l \}\) 升序排序,从而减少一维偏序。 设 \(f_{i}\) 表示以 \(i\) 结尾的最长合法序列长度,状态转移方程为 \(f_{i}=\max\limits_{j=1}^{i-1}\{ [a_{j}
阅读全文
摘要:题目传送门 前置知识 最长不下降子序列 | 权值树状数组及应用 解法 若将 \(\{ a \}\) 变成严格递增序列,至少需要更改 \(n\) 减去 \(\{ a_{i}-i \}\) 的最长不下降子序列长度个数。 证明 对于 \(a_{i},a_{j}(i<j)\) 若都在最终的严格递增序列里,则
阅读全文
摘要:题目传送门 前置知识 线性基 解法 考虑线性基。 因为有可空子序列也参与运算,所以第 \(1\) 小的数是 \(0\);但线性基中是不允许有异或和为 \(0\) 的存在,故线性空间内第 \(k-1\) 小的数就是所求的第 \(k\) 小的数。 令每一个二进制位仅在它这一位的基底上出现,其他位上的基底
阅读全文
摘要:题目传送门 前置知识 线性基 解法 将操作离线下来,并按 \(\{ l \}\) 升序排序,接着顺序插入线性基并处理询问。 对于未成功插入线性基的元素 \(k\) 一定能被线性基内选出若干元素得到。故在 \(x\) 能被表出的情况下,设 \(1 \sim l\) 中成功插入线性基的元素个数为 \(s
阅读全文
摘要:题目传送门 前置知识 最大公约数 解法 \(\gcd\) 和 \(\operatorname{or}\) 在固定左端点的情况下至多会变化 \(O(\log V)\) 次。 以 \(\gcd\) 为例,考虑求出所有的四元组 \((l,r,x,val)\) 表示 \(\forall i \in [l,r
阅读全文
摘要:题目传送门 前置知识 线段树优化建图 | 最短路 解法 考虑对票建虚点,从 \(c_{i}\) 向 \(i+n\) 连一条权值为 \(p_{i}\) 的边,然后从 \(i+n\) 向 \([a_{i},b_{i}]\) 连一条权值为 \(0\) 的边。 建出反图后 \(1 \to i\) 和 \(n
阅读全文
摘要:题目传送门 前置知识 后缀数组简介 | 字符串哈希 | 二分 解法 考虑分别计算出编辑距离恰好等于 \(k_{0} \in [0,k]\) 的答案。 观察在编辑距离的存在下,长度差至多为 \(k\)。 考虑设 \(f_{i,j}\) 表示最大的 \(x\) 使得 \(s_{1 \sim x}\) 和
阅读全文
摘要:题目传送门 前置知识 差分 解法 对于移动,我们可以无脑进行交换来保证移动,然后将中途交换的位置再交换回去。 通过手摸不难发现,\(p_{i}\) 能移动到 \(i\) 当且仅当 \(s_{\min(i,p_{i}) \sim \max(i,p_{i})}\) 中不含有 LR 子串。 反向考虑,即
阅读全文
摘要:你怎么知道我不但莫队的奇偶性排序写错了,还把块长、块数写反了
阅读全文
摘要:题目传送门 前置知识 矩阵加速递推 解法 设 \(f_{i}\) 表示将 \(s_{1} \sim s_{i}\) 拼起来后的值,状态转移方程形如 \(f_{i}=10^{k}f_{i-1}+s_{i}\) ,其中 \(k=\left\lfloor \log_{10}s_{i} \right\rfl
阅读全文
摘要:题目传送门 前置知识 同余最短路 解法 考虑同余最短路,设 \(dis_{i}\) 表示 \(\bmod a_{1}=i\) 时能被拼成的最小值,接着只需要判断是否有 \(dis_{b \bmod a_{1}} \le b\) 即可。 直接建边的空间复杂度为 \(O(nV)\) ,无法接受。但我们发
阅读全文
摘要:题目传送门 前置知识 Boruvka 算法 解法 考虑 Boruvka 算法。 拆掉绝对值后得到 \(a_{i}+id,a_{i}-id,a_{j}+id,a_{j}-id\) 四个式子。 vector 启发式合并辅助线段树查询的常数过大,无法通过。上述做法的常数在于一条边会被计算两次,考虑优化。
阅读全文
摘要:题目传送门 前置知识 曼哈顿距离与切比雪夫距离的相互转化 解法 将切比雪夫距离转换成曼哈顿距离,有新坐标为 \((\frac{x_{i}+y_{i}}{2},\frac{x_{i}-y_{i}}{2})\),因带一个 \(\frac{1}{2}\) 的常数不妨提出来得到 \((x_{i}'=x_{i
阅读全文
摘要:题目传送门 前置知识 珂朵莉树/颜色段均摊 解法 观察到只有 \(=x\) 的位置才是重要的,而其他位置上的数具体是什么并不重要,我们只需要关注其大小关系。 第一遍将 \(\ge x\) 的数看做 \(1\),将 \(<x\) 的数看做 \(0\)。第二遍将 \(>x\) 的数看做 \(1\),将
阅读全文
摘要:题目传送门 前置知识 线段树与离线询问 解法 普通的回退背包无法处理本题中的删除操作,考虑线段树分治后转化为只进行添加的背包。 具体实现时可以对每个深度开一个背包的转移数组,时间复杂度为 \(O(nk \log q+qk)\),可以接受。 代码 #include<bits/stdc++.h> usi
阅读全文
摘要:题目传送门 前置知识 最短路 | 最近公共祖先 | 虚树 解法 题目中所说的 回收路线树 即以 \(k\) 为根节点的最短路径树,可以使用 Dijkstra 构建。 标记 回收区域 本质上是对 回收区域 构建虚树,然后就和 luogu P2495 [SDOI2011] 消耗战 基本一致了,根据儿子节
阅读全文
摘要:题目传送门 前置知识 李超线段树 | 扫描线 解法 自边缘处起跳等价于找到与 \(x=x_{2}\) 相交的直线中最大的 \(y \le y_{2}\)。普通的李超线段树不支持删除操作,直接套用貌似很难处理。 观察到若能从 \((x_{1},y_{1}) \to (x_{2},y_{2})\) 跳跃
阅读全文
摘要:题目传送门 前置知识 树状数组 | 序列分治 解法 考虑序列分治,设因 \(\max\) 和 \(\min\) 形成的分节点先后为 \(k_{1},k_{2}\)。 对于 \(j \in (mid,k_{1}]\),等价于统计满足 \(\max\limits_{h=i}^{mid} \{ a_{h}
阅读全文

浙公网安备 33010602011771号