多校 A 层冲刺 NOIP2024 模拟赛 01

多校 A 层冲刺 NOIP2024 模拟赛 01

T1 构造字符串

签到题

注意到 \(n\)\(m\) 较小,直接扫一遍用并查集维护他所描述的情况,并将不同的位置记录下来,若存在不同的位置属于同一个集合则不可能构成,否则贪心从前往后取 mex 即可。

时间复杂度 \(O(nm\alpha(n))\)

T2 寻宝

签到题

首先先用并查集将大联通块缩点,注意到 \(m\) 很小,可直接连边然后 \(bfs\) 判断连通性。

时间复杂度 \(O(nm\alpha(nm)+qk)\)

T3 序列

李超线段树

注意到对于给定 \(p\) ,最大时的左右端点 \(l,r\) 是相互独立的,可以分开单独求解

\(A_i=\sum_{j=1}^{i}a_i\ \ \ \ B_i=\sum_{j=1}^{i}b_i\)

即求

\(右=A_r-A_p-k(B_r-B_p)\)

\(\quad\ =\max_{r>=p}\{-B_r k+A_r\}-A_p+kB_p\)

\(左=A_p-A_l-k(B_p-B_l)\)

\(\quad\ =\max_{l<p}\{B_l k-A_l\}+A_p-kB_p\)

\(相加相消:左=\max_{l<=p-1}\{B_lk-A_l\}\ \ 右=\max_{r>=p}\{-B_rk+A_r\}\)

注意到是一次函数形式,\(k\) 不大,直接上李超线段树维护即可。

\(p\) 不是单调的,离线下类似扫描线,扫一遍一个一个加进去即可

T4 构树

计数题,二项式反演,树类问题,Cayley公式

前置知识:

  • 二项式反演\(f(n)=\sum_{i=n}\binom{i}{n}g(i) ⟺ g(n)=\sum_{i=n}(-1)^{i-n}\binom{i}{n}f(i)\)

  • Cayley公式:一个完全图有 \(n^{n-2}\) 棵无根生成树。

  • 扩展Cayley公式:被确定边分为大小为 \(a_1,a_2,\cdots, a_m\) 的连通块,则有 \(n^{m-2}\prod {a_i}\) 种生成树。

  • \(shrink\_to\_fit()\):释放容器内存

题目所求即恰有 \(i(i\in[0,n-1])\) 条边属于原树边的方案数,记为 \(g(i)\)

二项式反演套路设 \(f(i)\) 为钦定 \(i\) 条边属于原树边的方案树,\(g\)\(f\) 显然满足二项式反演。

问题转移到求解 \(f(i)\)

根据扩展 Cayley公式,可以状压枚举边的情况然后直接套公式计算,时间复杂度 \(O(2^nn\alpha(n))\) 期望得分 \(65pts\)

正解考虑公式的组合意义从而设计状态进行 \(DP\)

对于一种情况 \(ans=n^{m-2}\prod_{i=1}^{m}a_i=\frac{n^m\prod_{i=1}^{m}a_i}{n^2}\) 考虑分子的组合意义,\(n^m\) 这个东西不需要考虑直接在每个连通块中将初始值设为 \(n\) 即可求解,对于 \(\prod a_i\) 即从每个连通块中恰选一个点的方案数。

那么可以设计状态 \(dp_{i,j,0/1}\) 表示在点 \(i\) 的子树中,选择了 \(j\) 条边,点 \(i\) 所在的连通块是否已经选择一个点,树上背包转移即可。

转移方程式是朴素的,按照公式转移,注意初始值设定为 \(n\) 即可

但是本题卡空间,为了节省空间考虑状态用 \(vector\) 来存,在儿子的状态转移完成后将其 \(clear()\),然后使用 \(shrink\_to\_fit()\) 做到真正的释放内存,空间复杂度 \(O(n)\)

时间复杂度分析
\(DP\) 部分:考虑每个点被合并的次数大概是 \(\sum_{o\in tree} n-size_o\)\(O(n^2)\) 级别
二项式反演部分显然是 \(O(n^2)\)
即总时间复杂度为 \(O(n^2)\)

p

posted @ 2024-10-03 21:24  Qyun  阅读(38)  评论(2编辑  收藏  举报