随笔分类 - 题解
摘要:## Two Centroids 先考虑对于一棵树,至少要加多少个点才能有两个重心。 以重心为根,设最大儿子的子树大小为 $mx$,那么答案就为 $(n - mx) - mx = n - 2mx$。 接下来考虑如何在加点时维护最大子树,一个显然的性质,加一个点重心最多偏移一位,如果重心偏移,那么 $
阅读全文
摘要:## Ciel and Flipboard 一道好题,很有思维难度。 首先,我们发现 $n$ 很小,所以对于一些位置应该是可以枚举的,再通过一些限制来确定其他位置。 对于操作的矩阵 $m * m$,我们发现中间一行必会被操作,而 $i$ 和 $i + m$ 行有且仅有一个被操作,那么设 $f_{i,
阅读全文
摘要:Lust 转换一下操作,即将$\prod a_i$变为$a_1 *...a_{x-1} * (a_x - 1) * ... * a_n$,设对第$i$个数减了$b_i$,那么答案就是$\prod a_i - \prod (a_i - b_i)$。 考虑对于一组$b_i$,去求$\prod (a_i
阅读全文
摘要:Minimize Inversions Number 首先考虑$k = 1$,记$g_i = \sum_{j = 1}^{i - 1} [p_i < p_j] - \sum_{j = 1}^{i - 1} [p_i > p_j]$,那么$g_i$表示将$i$移向最前面逆序对减少的量,那么我们的就相当
阅读全文
摘要:AT_hitachi2020_c ThREE 简单构造题,考虑题目给个限制,那么就是不能存在$i, j$,$i$到$j$的距离为$3$且$p_i \equiv p_j \pmod 3$且$p_i,p_j$不为$3$的倍数。 那么把数按模$3$分类,只需要保证同一类(不包括$3$的倍数)的数之间的距离
阅读全文
摘要:P5363 [SDOI2019]移动金币 转化一下题意,移动一个金币相当于把这个金币前面的格子移到了后面,这是经典的阶梯$\text{Nim}$,因为题目是把格子向后移,所以我们只要保证一共$m + 1$个数,$\lfloor \frac{m + 1}{2}\rfloor$个数的异或和不为$0$,所
阅读全文
摘要:CF889E Mod Mod Mod 一道有趣的题,考虑$x$有意义的取值,设$f_i$表示$x \bmod a_1 ... \bmod a_i$的值,那么一定存在$f_k = a_k - 1$,否则我们可以让$x$整体加一直到达到上界,这样显然更优,所以$x$有意义的取值只有$O(n)$个,这样我
阅读全文
摘要:P5369 [PKUSC2018]最大前缀和 题目要我们求每一种排列的最大前缀和,不妨考虑先确定最大前缀和,再计算它的方案数,设$U$为全集,那么答案就为$\sum_{S \subseteq U}sum[S] * f[S]$,其中$sum[S] = \sum_{i \in S}a_i$,那么我只需要
阅读全文
摘要:[AGC005D] ~K Perm Counting 智慧转化,但不是很难想到。首先考虑容斥,设$f_i$表示强制$i$个位置$|P_i - i| = k$的方案数,那么答案就为$\sum_{i = 0}^n f_i(n - i)!$,那么如何求$f_i$呢? 我们考虑位置之间的限制,可以将问题转化
阅读全文
摘要:P3175 [HAOI2015]按位或 设$A_i$表示第$i$位变为$1$的时间,那么答案就是$max(A)$。发现$max(A)$不好直接求,但$min(A)$很好求,考虑$min-max$容斥。 那么 $E(max(A)) = \sum_{T \subseteq A}(-1)^{|T| + 1
阅读全文
摘要:P5309 [Ynoi2011] 初始化 考虑暴力,模拟题意,时间复杂度竟是$O(\frac{n^2}{x})$,那么对于$x \ge \sqrt{n}$的修改就可以暴力了,这不是根号分治吗。 再去考虑$x < \sqrt{n}$的修改,那么不同的$x$最多只有$\sqrt{n}$个,维护一个余数的
阅读全文
摘要:$\text{Solution}$ 一道思维题,我们发现计算答案肯定是考虑每一个数$a_i$的贡献,但我们发现其系数不好算。如果是在一个环上,那么每个位置的系数是相同的,而且很好计算。设$f_{i,j}$表示在长度为$i$的序列上选$j$个不相邻的点,显然$f_{i,j} = \dbinom{i -
阅读全文
摘要:$\text{Solution}$ 一道有思维的$hash$题,考虑先确定了$r0$的长度,那么$r1$的长度也就确定了,这样我们可以用$O(|T|)$来确定每个$0$和$1$对应的字符串,可以用字符串$hash$来$O(1)$判断。乍一看这样时间复杂度是$O(|S||T|)$,但$r0$和$r1$
阅读全文
摘要:$\text{Solution}$ 一道经典的笛卡尔树上的$DP$,对于行的影响,我们建出笛卡尔树,那么一个点所代表的,就是整块的,不用考虑中间是否断开。这样我们就很好$DP$,设$f_{u,i}$表示当前节点为$u$,有$i$列已经被覆盖了,那么显然是一个树形背包,最后乘以自己对答案的贡献即可。
阅读全文
摘要:$\text{Solution}$ 一道有思维的建图题,不妨考虑暴力怎么做,只需枚举形如$x - y - z$这样的三个点,把边权赋为最大值即可,但这样边数会很多。 考虑优化,看成有向边,化边为点,对于一个点,把它所连的所有边按权值排序,顺次连接,正向为差值,反向为$0$,这样就实现了取$max$的
阅读全文
摘要:$\text{Solution}$ 手玩一下,发现如果差分$k$次后序列全为零,那么一定存在操作方案使得答案为$k$。 那么现在问题就转化成了求最小的$k$,使得差分$k$次后,序列全为$0$。 现在考虑去差分$P^k$的序列是怎样的,显然新序列$G$中$G_i = S_i + S_{i + P ^
阅读全文
摘要:$\text{Solution}$ 一道有难度的博弈论,对于一个点最多走$1000$次其实是没有意义的,可以看成只走$1$次。考虑去二分答案$mid$,那么对于原图就会变成很多个黑白点,那么每一次操作就必须要从一个颜色的点跳到另一颜色的点,不然对手就会直接结束游戏,这不是经典的二分图博弈吗?用一下结
阅读全文
摘要:$\text{Description}$ 给定一棵深度为$k (\le 400)$的满二叉树,每个节点均与其所有祖先连边。 求树中每个节点最多经过一次的不同有向路径数量。 $\text{Solution}$ 一道需要人类智慧的$DP$,考虑现在已经求出了树深为$k - 1$的答案,那么只需要合并两颗
阅读全文
摘要:后缀自动机 简介 给定一个字符串$S$,我们把$S$的每一个后缀都插入$trie$中。这样这个$trie$就能处理许多的问题,但这颗$trie$的大小是$O(n^2)$级别的,所以我们要用到后缀自动机。 构建 定义$endpos(s)$为字串$s$在原串$S$中出现的位置。那不同$endpos(s)
阅读全文
摘要:$\text{Solution}$ 一道简单的$DP$,没有需要转弯的地方,思路较为顺畅。 考虑每一位的填法是独立的,设$f_{i,0/1/2/3}$表示填到第$i$位,当前的状态为$s < w$或$s > w$或$s = w$或$s$和$w$不可比。易得转移 $$f[i][0] = f[i - 1
阅读全文