模拟赛题解

「6.18」多校联训41

种蘑菇

直接求不好求,考虑枚举答案。
\(ans=\sum\limits_{g=0}^{n}\sum\limits_{s=0}^{\frac{n}{g}}g^{s}F[g][s]\)
\(\text{F[g][s]}\) 表示 \(\text{gcd}\)\(\text{g}\) 且集合大小为 \(\text{s}\) 的集合个数。
涉及到 \(\text{gcd}\),考虑莫比乌斯反演
定义 \(\text{G[g][s]}\) 表示 \(\text{gcd}\)\(\text{g}\) 的倍数且集合大小为 \(\text{s}\) 的集合个数。
\(G[g][s]=\sum\limits_{g|k}F[k][s]\)
反演得
\(F[g][s]=\sum\limits_{g|k}\mu(\frac{k}{g})G[k][s]\)
代入原式
\(ans=\sum\limits_{g=0}^{n}\sum\limits_{s=0}^{\frac{n}{g}}g^{s}\sum\limits_{g|k}\mu(\frac{k}{g})G[k][s]\)
单独的一个 G[k][s] 可以在所有提出k的倍数的点的各联通块中dp得到,但是dp一次复杂度是\(\mathcal{O}((\frac{n}{k})^2)\)的。
发现可以交换求和号
\(ans=\sum\limits_{g=0}^{n}\sum\limits_{g|k}\mu(\frac{k}{g})\sum\limits_{s=0}^{\frac{n}{g}}g^sG[k][s]\)
现在 \(\sum\limits_{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)\)

轮回

期望 \(\text{dp}\) 一般是倒着转移的
定义 \(\text{f[i][j]}\)表示现在在 \(\text{i}\) (已经击打完了),偏离中心线距离为\(\text{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]\)
并且 \(\text{f[1~n][j]}\) 形成了环的形式,我们可以迭代,解方程组即可求出 \(\text{f}\)
我们将 \(\text{f[i][0~k]}\) 看作矩阵 \(F_i\),那么 \(F_i=M_i*F_{i+1}\)
对于 \(\text{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\)
将其展开就得到了一个 \(\text{k+1}\) 个变量,\(\text{k+1}\) 个方程的方程组,是可以高斯消元解出 \(\text{f[i][0~k]}\) 的,而从 \(\text{i}\) 开始走的答案就是 \(\text{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 \to b\)\(b \to c\),那么变成 \(a \to c\) 修改量不变
  • 如果有路径 \(a \to b\)\(c \to d\),那么变成 \(a \to d\)\(c \to b\) 修改量不变

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

「6.21」多校联训43

小卖部

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

博弈

网络流

「6.22」多校联训44

战神归来

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

组合数问题

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

\(\sum\limits_{i=0}^{n}(-1)^i\sum\limits_{j=0}^{n}j^m\binom{j}{i}(m+i)^j\)
\(=\sum\limits_{j=0}^{n}j^m\sum\limits_{i=0}^{n}(-1)^i\binom{j}{i}(m+i)^j\)
\(=\sum\limits_{j=0}^{n}j^m\sum\limits_{i=0}^{n}(-1)^i\binom{j}{i}\sum\limits_{k=0}^{j}\binom{j}{k}m^{j-k}i^k\)
\(=\sum\limits_{j=0}^{n}j^m\sum\limits_{i=0}^{n}(-1)^i\binom{j}{i}\sum\limits_{k=0}^{j}\binom{j}{k}m^{j-k}\sum\limits_{l=0}^{k}\binom{i}{l}l!\begin{Bmatrix}k\\l\end{Bmatrix}\)
\(=\sum\limits_{j=0}^{n}j^m\sum\limits_{k=0}^{j}\binom{j}{k}m^{j-k}\sum\limits_{k=0}^{k}l!\begin{Bmatrix}k\\l\end{Bmatrix}\sum\limits_{i=0}^{n}\binom{j}{l}\binom{j-l}{i-l}(-1)^i\)
\(=\sum\limits_{j=0}^{n}j^m\sum\limits_{k=0}^{j}\binom{j}{k}m^{j-k}\sum\limits_{k=0}^{k}l!\begin{Bmatrix}k\\l\end{Bmatrix}\binom{j}{l}\sum\limits_{i=0}^{j-l}\binom{j-l}{i}(-1)^{i+l}\)
\(=\sum\limits_{j=0}^{n}j^m\sum\limits_{k=0}^{j}\binom{j}{k}m^{j-k}\sum\limits_{k=0}^{k}l!\begin{Bmatrix}k\\l\end{Bmatrix}\binom{j}{l}(-1)^l\left[j=l\right]\)
\(=\sum\limits_{j=0}^{n}j^mj!(-1)^j\)

三角形

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

posted @ 2021-06-18 21:44  liuzhaoxu  阅读(62)  评论(0编辑  收藏  举报