摘要:
考虑到期望的线性性,将本题转化为计数问题。 设 \(f(x,i)\) 为以 \(x\) 为根的子树中,轻边数量最大为 \(i\) 的方案数,其转移复杂度为 \(O(n^3)\),无法接受。于是再加一维,得 \(f(x,i,0/1)\),$0/1$ 表示是否已经选择了重边,得转移为: \[ \larg 阅读全文
摘要:
求出每个新修道路到达的瞭望塔 \(x\) 能更新到的区间 \([l_i,r_i]\),答案即为 \(\sum r_i-l_i+1\)。 发现区间的范围是可以二分出来的,考虑 \(x\) 是否能更新 \(p\),设 \(d=|x-p|\),若在区间 \([p-d,p+d]\) 中没有比 \(x\) 更 阅读全文
摘要:
每个点的答案为所有经过该点的链的并的大小。得链并即为所有经过该点的链的端点构成的最小连通块,设端点按 \(dfs\) 序排序后为 \(a_i\),得最小连通块的边数为: \[ \large \sum_{i=1}^{cnt} dep_{a_i}-\sum_{i=1}^{cnt-1} dep_{\ope 阅读全文
摘要:
发现答案在二进制下最多为 \(16\) 位,那么将 \(v\) 到 \(u\) 的路径每 \(256\) 个点分为一段,得同一段在二进制下 \(dis\) 的高 \(8\) 位相同。 设 \(f_{x,i}\) 为从 \(x\) 向上的一段,高 \(8\) 位为 \(i\) 时答案的最大值,询问就暴 阅读全文
摘要:
当 \(d_i\) 互不相同时,建出树后,按树的后序遍历,优先遍历编号小的点得到的顺序,\(d_i\) 从大到小填,即为最优解。 但 \(d_i\) 不保证互不相同时,这个贪心就不对了。设 \(f_i\) 为 \([1,i]\) 中有多少个 \(d_i\) 可以填,那么所有满足 \(\min\lim 阅读全文
摘要:
总子矩形个数减去内部没有资源点的子矩形个数即为答案。 考虑枚举子矩形的下边界,从上到下进行扫描。对列建笛卡尔树,其中序遍历为下标,维护堆性质的权值为该列上点的行数最大值。然后在笛卡尔树上的每个节点统计贡献。 扫描时需要支持单点修改权值,那么直接用 \(FHQ\ Treap\) 建笛卡尔树即可,因为数 阅读全文
摘要:
建立图论模型,\(x\) 向 \(x+\operatorname{lowbit}(x)\) 连边。当 \(k\) 为奇数时,因为 \(k \perp 2\),所以 \(x\) 无论加多少次 \(\operatorname{lowbit}(x)\),\(\operatorname{lowbit}(x) 阅读全文
摘要:
先对式子进行转化: $$ \large\begin{aligned} &\sum_S(f(S))^k \ =&\sum_S\sum_{i=0}^k\begin{Bmatrix} k \i \end{Bmatrix}\binom{f(S)}{i}i! \ =&\sum_{i=0}^k\begin{Bm 阅读全文
摘要:
先考虑这样的一个问题:有 \(n\) 种颜色的球,每种有 \(b_i\) 个,求满足相邻不同色的排列的方案数。CF840C On the Bench 考虑容斥,枚举有多少个违反了相邻不同色的限制,违反后可以将相邻同色的球看作一个整体,枚举有 \(c_i\) 段相邻,得: \[ \large\begi 阅读全文
摘要:
发现若 \(G_{i,j}=\mathsf{A}\),则 \(i,j\) 一定在同一个强连通分量中,而同一个强连通分量中不能存在 \(\mathsf{X}\),因此先将满足 \(G_{i,j}=\mathsf{A}\) 的 \(i,j\) 进行缩点,然后通过 \(\mathsf{X}\) 判断是否无 阅读全文
摘要:
因为一个 \(x_i\) 不会出现超过两次,因此将有相同 \(x_i\) 的表达式之间连边,得到的图为若干链和环。 设 \(f_{i,0/1,0/1,0/1}\) 为考虑了链或环的前 \(i\) 个点,第一个点的状态,上一个变量的状态,现在的异或和状态的方案数,分类讨论来转移,最后将所有连通块的信息 阅读全文
摘要:
Codeforces Round #633 (Div. 1) A 最优情况一定是只在必须的位置增加,记录最大增量,取 \(\log_2\) 即为答案。 B 最小值:叶子节点两两间的距离都为偶数时,答案为 $1$,否则答案为 $0$,以任意一个叶子节点为根 \(dfs\) 即可判定。 最大值:先将答案 阅读全文
摘要:
Codeforces Round #647 (Div. 1) - Thanks, Algo Muse! A 权值从小到大填,确定一个点的权值后,更新其相邻点的 \(\operatorname{mex}\)。 B 先将 \(k_i\) 从大到小排序,将 \(p_{k_i}\) 分到当前和较小的集合中, 阅读全文
摘要:
暴力的做法就是将区间 \([l,r]\) 内的数都插到 \(AC\) 自动机中,然后 \(DP\) 确定字符串。 需要进一步优化,先转化为 \(\leqslant r\) 的贡献减 \(\leqslant l-1\) 的贡献,那么接下来就只用考虑形如 \(\leqslant a\) 的限制了。\(A 阅读全文
摘要:
Codeforces Round #626 (Div. 1, based on Moscow Open Olympiad in Informatics) A 设 \(s_i\) 为前缀左括号个数减右括号个数,每一段 \(s_i<0\) 的区间都需要操作,操作还需包含一段负区间末尾 \(s_i=0\) 阅读全文
摘要:
最大化 \(f(x)=\left|\sin\left(\frac{p}{q}\pi x\right)\right|\) 就是让 \(\frac{px}{q}\) 越接近 \(\frac{1}{2}+k\),即 \(\frac{px}{q}\) 的小数部分 \(\frac{px \bmod q}{q} 阅读全文
摘要:
Codeforces Round #625 (Div. 1, based on Technocup 2020 Final Round) A \[ \large\begin{aligned} c_{i+1}-c_i&=b_{c_{i+1}}-b_{c_i},\forall i \in [i,m) \\ 阅读全文
摘要:
Codeforces Round #639 (Div. 1) A \[ \large\begin{aligned} x+a_{x \bmod n}&=y+a_{y \bmod n} \\ x-y&=a_{y \bmod n}-a_{x \bmod n} \\ k_1n+i-(k_2n+j)&=a_j 阅读全文
摘要:
节点深度转化为有多少个节点为该节点的祖先,得 \(b\) 为 \(a\) 在笛卡尔树上的祖先的充要条件是 \(p_b\) 是区间 \([\min(a,b),\max(a,b)]\) 的最小值。原问题就转化为对于每个 \(b\) 统计有多少个逆序对为 \(k\) 的 \(n\) 阶排序满足 \(p_b 阅读全文
摘要:
将序列对应到笛卡尔树,发现每棵笛卡尔树只对应一种合法序列。因为在笛卡尔树上往左走其对应的数至少减 $1$,往右走不一定减 $1$,所以这棵笛卡尔树从根节点往左走的次数要 \(\leqslant m\),题目就转化为了统计有多少棵 \(n\) 个节点的合法笛卡尔树。 笛卡尔树是二叉树,因为二叉树和括号 阅读全文
摘要:
Codeforces Round #606 (Div. 1, based on Technocup 2020 Elimination Round 4) A 只有 \(one\) 时删 \(n\),只有 \(two\) 时删 \(w\),出现 \(twone\) 时删 \(o\)。 B 发现 \(a, 阅读全文
摘要:
Codeforces Round #609 (Div. 1) A 若 \(b\) 取 \(a\) 的前 \(k\) 位后循环得到的数已经 \(\geqslant a\) 了,则其为最优解,否则答案在第 \(k\) 位加 $1$ 后再循环得到的数。需要注意处理进位。 B 放骨牌为二分图匹配,得答案为黑 阅读全文
摘要:
Codeforces Round #564 (Div. 1) A 最优情况一定是先打出若干张空白牌后就一直不打空白牌了。设 \(pos_i\) 为 \(i\) 这个数在牌堆中的位置,若一张空白牌都不打就能完成则其为最优,否则答案为 \(\max\limits_{i=1}^n pos_i+n-i+1\ 阅读全文
摘要:
考虑将询问离线,固定右端点 \(i\),这里只考虑满足 \(j<i,a_j>a_i\) 的答案,因为将 \(a_i\) 的值域翻转后再做一遍就能得到所有情况。询问就是查询对于每个位置 \(j\) 得到的答案的后缀最小值。 用权值线段树就能找到满足 \(j<i,a_j>a_i\) 的最大位置 \(j\ 阅读全文
摘要:
Codeforces Round #530 (Div. 1) A 因为 \(a_x \geqslant 0 \and \forall y \in son_x,s_x \leqslant s_y\),所以对于深度为偶数的点 \(x\),当 \(s_x=\min\limits_{y \in son_x} 阅读全文