模拟赛题解

「6.18」多校联训41

种蘑菇

直接求不好求,考虑枚举答案。
(ans=sumlimits_{g=0}^{n}sumlimits_{s=0}^{frac{n}{g}}g^{s}F[g][s])
( ext{F[g][s]}) 表示 ( ext{gcd})( ext{g}) 且集合大小为 ( ext{s}) 的集合个数。
涉及到 ( ext{gcd}),考虑莫比乌斯反演
定义 ( ext{G[g][s]}) 表示 ( ext{gcd})( ext{g}) 的倍数且集合大小为 ( ext{s}) 的集合个数。
(G[g][s]=sumlimits_{g|k}F[k][s])
反演得
(F[g][s]=sumlimits_{g|k}mu(frac{k}{g})G[k][s])
代入原式
(ans=sumlimits_{g=0}^{n}sumlimits_{s=0}^{frac{n}{g}}g^{s}sumlimits_{g|k}mu(frac{k}{g})G[k][s])
单独的一个 G[k][s] 可以在所有提出k的倍数的点的各联通块中dp得到,但是dp一次复杂度是(mathcal{O}((frac{n}{k})^2))的。
发现可以交换求和号
(ans=sumlimits_{g=0}^{n}sumlimits_{g|k}mu(frac{k}{g})sumlimits_{s=0}^{frac{n}{g}}g^sG[k][s])
现在 (sumlimits_{s=0}^{frac{n}{g}}g^sG[k][s]) 可以对于将所有k倍数的点提出来形成的若干联通块进行一次 (mathcal{O}(frac{n}{k})) 的dp求出来
其实这个贡献就是每个点有权值g,一个联通块的权值为各个点权值之积,求这些点所有可能形成的联通块情况的权值和
dp的时候在合并子树时考虑是否连上该子树, 初始dp[x]=g,合并子树时不断进行 (dp[x]=dp[x](dp[y]+1)),最终贡献为所有点的dp值之和。
时间复杂度(mathcal{O}(nlog^2))

轮回

期望 ( ext{dp}) 一般是倒着转移的
定义 ( ext{f[i][j]})表示现在在 ( ext{i}) (已经击打完了),偏离中心线距离为( ext{j}),从现在往后走的期望步数。
转移 (f[i][j]=1+p[i]*f[i+1][j]+frac{1-p[i]}{2}*f[i+1][abs(j-1)]+frac{1-p[i]}{2}*f[i+1][j+1])
并且 ( ext{f[1~n][j]}) 形成了环的形式,我们可以迭代,解方程组即可求出 ( ext{f})
我们将 ( ext{f[i][0~k]}) 看作矩阵 (F_i),那么 (F_i=M_i*F_{i+1})
对于 ( ext{n=3}) 的,可以列出
(F_1=M_1*F_2)
(F_2=M_2*F_3)
(F_3=M_3*F_1)
迭代得
(F_1=M_1*M_2*M_3*F_1)
(F_2=M_2*M_3*M_1*F_2)
(F_3=M_3*M_1*M_2*F_3)

(F_i=M_i*M_{i+1}...M_n*M_1*M_2...*M_{i-1}F_i)
(M=M_i*M_{i+1}...M_n*M_1*M_2...*M_{i-1})
得到 (F_i=M*F_i)
将其展开就得到了一个 ( ext{k+1}) 个变量,( ext{k+1}) 个方程的方程组,是可以高斯消元解出 ( ext{f[i][0~k]}) 的,而从 ( ext{i}) 开始走的答案就是 ( ext{f[i][0]})
然后发现 (M)(M_1*M_2...*M_n) 的一个后缀和一个前缀的乘积,可以用线段树维护矩阵乘法,查询区间乘积,单点修改。
时间复杂度 (mathcal{O}(qk^3logn))

首先删去 (y_1), (y_m) 以外的点和重复的点
定义每个点有 ((x_i,y_i)),为其分别距离左右最近的洞的距离
放到坐标系上,发现移动就可以看作每次可以向上移动x轴或向右移动y轴,每个点最先被哪个轴覆盖到就对应进哪边的洞。
并且,如果一个点被x轴覆盖到,那么其右下方的点都会被x轴覆盖到
所以每种终止状态可以看成选出一些点被x轴覆盖,且这些点是最紧限制的(在尽量靠左上方)(这些点之间没有决定或被决定的关系)
发现可以选的这些点满足x,y互不相同,且x递增的情况下y严格递增
所以此问题转化为求严格上升子序列(子序列中各点x,y互不相同)的方案数,树状数组优化dp,时间复杂度 (mathcal{O}(nlogn))

「6.19」多校联训42

区间第 k 小

  • 给定一个序列以及参数 (omega),强制在线,每次询问对于区间 ([l,r]),忽略出现次数大于 (omega) 的数求第 (k) 小。((n,q leq 1e5))
  • 如果可以离线,可以莫队+值域分块
  • 值域分快单次修改 (mathcal{O}(1)),单次询问 (mathcal{O}(sqrt{n})) ,维护两个数组 (tot)(c),记录当前扫到的数的信息,分别表示值域上在每个块内的数的总次数和每个数的出现次数,询问时先通过 (tot) 来判断答案在哪个块里,依次遍历块内数的桶即可。
  • 强制在线,考虑如何维护出 (tot)(c)
  • (tot) 可以预处理,首先对序列分块, (tot[i][j][k]) 维护第 (i) 个块到 (j) 个块的 (tot) 信息,询问 ([l,r]) 时零散的暴力改 (tot)
  • (c) 因为空间限制开不下类似 (tot) 的预处理数组。发现我们只需要知道一段区间某个数出现次数,因此我们处理 (c[i][j]) 表示序列前 (i) 个块中 (j) 的出现次数,询问 ([l,r]) 先差分,零散的数暴力改即可。

求和

莫比乌斯反演,杜教筛

本题有 (2) 个性质:

  • 如果有路径 (a o b)(b o c),那么变成 (a o c) 修改量不变
  • 如果有路径 (a o b)(c o d),那么变成 (a o d)(c o b) 修改量不变

通过性质一,发现点 (x) 的入度与出度可以抵消
通过性质二,发现若得到起点集合与终点集合,那么起点与终点可以任意匹配,进而容易满足字典序最小的条件。
对于叶子节点,容易得出其入度与出度,进而知道其作为起点还是终点。
对于非叶子节点,在统计完叶子后删去叶子,即可同理处理新叶子。
注意在处理叶子的度数时,其父亲的度数也应修改。

「6.21」多校联训43

小卖部

容易发现对于询问 (l,r,c)( ext{OGF})(prodlimits_{i=l}^{r}(1+x^{b_i}+x^{2b_i}...+x^{a_ib_i}))
答案即为前 ( ext{c}) 项的系数之和。
注意 ((1+x^{b_i}+x^{2b_i}...+x^{a_ib_i})) 其封闭形式为 (frac{1-x^{(a_i+1)b_i}}{1-x^{b_i}})
维护前缀积 ( ext{f}) 与求逆后的前缀积 ( ext{g})
维护前缀积的时候用发散形式乘,逆的前缀积用封闭形式乘
观察性质发现卷积拆开后容易 (mathcal{O}(c)) 乘一次

博弈

网络流

「6.22」多校联训44

战神归来

发现相反且重合的 (2) 条路径,重合部分会被抵消掉,利用差分,求前缀和得到第一问答案。
对于方案,不难得到一个时间复杂度 (mathcal{O}(n*(n+m))),最劣操作次数 (mathcal{O}(n^2)) 的做法,至此有 (72) 分。
具体做法就是将向右的路径存在终点的 ( ext{vector}) 中,并记录现在时刻该路径起点位置,按照终点位置从右向左排序方向向左的路径。
依次处理排序后的向左的路径,对于每条向左的路径,从右向左遍历 ( ext{m})个位置的 ( ext{vector}) 并匹配,同时修改 ( ext{vector}) 中被匹配的路径的起点位。
正确性在于只要能匹配就匹配是不会使花费更劣的。
正解用 (2) 个栈分别维护不同方向的路径,从左向右,类似扫描线,每条路径只在一段时间内在栈中,对于每个时刻,如果 (2) 个栈都有值就不断匹配或 ( ext{pop}) 不合法,而且发现匹配一次一定会至少减少一条路径(如果有一条后面还可以匹配,就将其以后再放进去),最后得到零散操作,建图跑拓扑序输出即可,时间复杂度 (mathcal{O}(nlogn)),瓶颈在建拓扑图时排序。

组合数问题

利用二项式定理展开二项式
利用第二类斯特林数的性质展开通常幂
通过改变枚举顺序,利用二项式定理合并,容易化简得到 (sumlimits_{j=0}^{n}j^mj!(-1)^j),可以 (mathcal{O}(nlogn)) 解决

(sumlimits_{i=0}^{n}(-1)^isumlimits_{j=0}^{n}j^minom{j}{i}(m+i)^j)
(=sumlimits_{j=0}^{n}j^msumlimits_{i=0}^{n}(-1)^iinom{j}{i}(m+i)^j)
(=sumlimits_{j=0}^{n}j^msumlimits_{i=0}^{n}(-1)^iinom{j}{i}sumlimits_{k=0}^{j}inom{j}{k}m^{j-k}i^k)
(=sumlimits_{j=0}^{n}j^msumlimits_{i=0}^{n}(-1)^iinom{j}{i}sumlimits_{k=0}^{j}inom{j}{k}m^{j-k}sumlimits_{l=0}^{k}inom{i}{l}l!egin{Bmatrix}k\lend{Bmatrix})
(=sumlimits_{j=0}^{n}j^msumlimits_{k=0}^{j}inom{j}{k}m^{j-k}sumlimits_{k=0}^{k}l!egin{Bmatrix}k\lend{Bmatrix}sumlimits_{i=0}^{n}inom{j}{l}inom{j-l}{i-l}(-1)^i)
(=sumlimits_{j=0}^{n}j^msumlimits_{k=0}^{j}inom{j}{k}m^{j-k}sumlimits_{k=0}^{k}l!egin{Bmatrix}k\lend{Bmatrix}inom{j}{l}sumlimits_{i=0}^{j-l}inom{j-l}{i}(-1)^{i+l})
(=sumlimits_{j=0}^{n}j^msumlimits_{k=0}^{j}inom{j}{k}m^{j-k}sumlimits_{k=0}^{k}l!egin{Bmatrix}k\lend{Bmatrix}inom{j}{l}(-1)^lleft[j=l ight])
(=sumlimits_{j=0}^{n}j^mj!(-1)^j)

三角形

发现合法三角形一定有 (2) 个端点为包围其的最小矩形 (2) 个对角顶点,若这 (2) 点都确定,第三个端点只有 (2) 个位置,且矩形应满足长宽互质。
以上性质利用 ( ext{pick}) 定理及 ( ext{exgcd}) 的相邻解间隔不难得到。
(sumlimits_{i=1}^{n}sumlimits_{j=1}^{n}4(n-i)(m-j)[i perp j])
(=sumlimits_{i=1}^{n}sumlimits_{j=1}^{n}4(n-i)(m-j)sumlimits_{d|(i,j)}mu(d))
(=4sumlimits_{d=1}^{n}mu(d)sumlimits_{i=1}^{frac{n}{d}}(n-id)sumlimits_{j=0}^{frac{m}{d}}(m-jd))
(=4sumlimits_{d=1}^{n}mu(d)frac{n}{d}frac{m}{d}-4sumlimits_{d=1}^{n}mu(d)d(m·frac{m}{d}sumlimits_{i=1}^{frac{n}{d}}i+n·frac{n}{d}sumlimits_{i=1}^{frac{m}{d}}i)+4sumlimits_{d=1}^{n}mu(d)d^{2}sumlimits_{i=1}^{frac{n}{d}}isumlimits_{j=1}^{frac{m}{d}}j)
(mu(d))(mu(d)·d)(mu(d)·d^2)前缀和用杜教筛解决,时间复杂度 (mathcal{O}(n^{frac{2}{3}}))

原文地址:https://www.cnblogs.com/Lour688/p/14901324.html