06 2020 档案
摘要:设$lenth_i$为$s$在$i$位置的前缀的后缀为$t$的一个子串的最长长度,即为从$i$位置开始往前和$t$的最长公共子串长度。其可以通过对$t$建后缀自动机,然后让$s$在自动机上匹配来求出。 求出$lenth_i$后,对于区间$[l,r]$的一个询问,其答案即为: \[ \max_{i=l
阅读全文
摘要:根据题意,题目中所求的即为所有$n!$种完美匹配的各自的出现概率之和再乘上$2^n$的值。 发现$n$很小,考虑状压$DP$。设$f_{S,T}$为左部图匹配情况为$S$,右部图匹配情况为$T$的期望,可以得到转移为: \[ f_{S,T}=\sum_{x \subseteqq S \land y
阅读全文
摘要:因为有撤销操作,所以修改操作可能会只会存在一段时间,因此把时间看作一维,被修改的序列看作一维。 可以把操作都离线下来,对于每个修改操作,就是在二维平面上对一个矩形进行修改,询问操作,就是查询单点权值。 具体实现时,可以对所有询问操作查询的单点建$K-D\ Tree$,然后在$K-D\ Tree$上矩
阅读全文
摘要:考虑可以枚举字符串上的两个点,求出两个点所对应后缀的$LCP$和所对应前缀的$LCS$,两点之间的距离为$len$,则这两个点对答案的贡献为: \[ \frac{LCS+LCP+L-1}{L} \] 取最大值即为答案,可以通过下图来理解这个式子: 首先已经将字符串分为了若干个长度为$len$的块,箭
阅读全文
摘要:根据题意,发现题目中的图,其实就是一颗树或者是一颗基环树,每个节点上有一个点对$(x,y)$,每次询问为给定端点,找一条直线到端点间的所有点的距离之和最小。 设这条直线为$y=kx+b$,根据点到直线公式得,我们要求$\sum\limits_^n \frac{(kx_i-y_i+b)2}{k2+1}
阅读全文
摘要:不难想到可以$2^k$去枚举$k$条新边的选择方案,然后加入原图中的边来使图连通,用当前方案的收益去更新答案,但是这样复杂度过不去。 可以先把$k$条新边都连上,然后再加入边权从小到大排序过后的原图的边,直到图连通。后加入的原图的边在任何一个新边的选择方案都是要加入的,因为找这些边时是选了所有$k$
阅读全文
摘要:可以用网络流解决这个题。 注意到$a_i \geqslant 2$,所以当相邻数字要和为质数时,这两个数要一个为奇数,一个为偶数。 所以就先将所有数按奇偶分为两列,其就构成了一个二分图,二分图中和为质数的两个数间连容量为$1$的边,表示只能匹配一次。 因为是圆桌,所以一个数要恰好匹配两个数,所以每个
阅读全文
摘要:可以先考虑没有障碍物的情况,设计状态$f_{i,j,k}$,表示到达坐标 $(x,y,z)$二进制下,$x$有$i$位,$y$有$j$位,$z$有$k$位的方案数。 得转移方程为: \[ f_{i,j,k}=\sum_{x=1}^i f_{i-x,j,k}\binom{i}{x}+\sum_{x=1
阅读全文
摘要:考虑生成一颗二叉树的过程,加入第一个节点方案数为$1$,加入第二个节点方案数为$2$,加入第三个节点方案数为$3$,发现生成一颗$n$个节点的二叉树的方案数为$n!$。 所以题目中所求即为点与点之间的距离之和,考虑每一条边的贡献,即$\sum\limits_esize_x \times size_y
阅读全文
摘要:对于一个固定的左端点,右端点向右移动时,其子串权值和不断增大,字典序降序排名不断减小,因此对于一个左端点,最多存在一个右端点使其满足条件。 所以可以枚举左端点,然后二分右端点的位置,权值和通过前缀和来查询,现在的问题就是如何快速查询一个子串的排名。 考虑用后缀数组来解决,对于一个子串$[l,r]$,
阅读全文