2025.4.29 NOI 模拟赛 题解

比赛

T1 NFLS #P13045. 智慧树 \(\quad\) gym 103447C. Colorful Tree

题意

给定一棵树,初始每个叶子都没有染色,每次操作可以选择一棵子树将其中的叶子都染成同一种颜色,求将每个叶子 \(i\) 染成给定的颜色 \(a_i\) 的最少操作次数,\(n\le2\times10^6,1\le a_i\le n\)

分析

\(f_{i,j}\) 表示子树 \(i\) 之上进行一次染为 \(j\) 的操作,要将子树 \(i\) 内所有叶子染为给定颜色的最少操作次数,令 \(g_i\) 表示子树 \(i\) 之上没有进行染色时的答案

\[f_{i,a_i}=0,f_{i,\ast}=1,g_{i}=1\\ f_{u,x}\gets \sum_{v\in son(u)}f_{v,x}\\ g_u\gets \min(g_u,f_{u,\ast}+1)\\ f_{u,\ast}\gets \min(f_{u,\ast},g_u)\\ \]

暴力实现为 \(O(n^2)\)

\(mn_x=g_x-1\),则 \(f_{x,\ast}\in\{mn_x,mn_x+1\}\)

对于每个 \(x\) 将所有 \(f_{x,t}=mn_x\)\(t\) 保存在集合 \(S_x\)

对于叶子结点,\(mn_x=0,S_x=\{a_x\}\)

\(u\) 为一个非叶子结点,令 \(S\)\(u\) 所有儿子的 \(S_x\) 的可重并,令 \(mx\)\(S\) 中出现次数最多的数的出现次数

\(mn_u=\sum_{v\in son(u)}(mn_v+1)-mx\)\(S_u\)\(S\) 去重后的结果

使用 \(\text{DSU on tree}\)unordered_map 可做到 \(O(n\log n)\)

代码

参考

T2 NFLS #P13044. 四元组

题意

一张 \(n\) 点完全图,其中 \(m\) 条边为红色,剩余为蓝色,求满足 \(a,b,c,d\) 两两之间连边为红色的无序四元组 \((a,b,c,d)\) 的数量减去全为蓝色的数量的绝对值,\(n\le10^5,m\le2\times10^5\)

分析

对于四元组 \((a,b,c,d)\),假定 \(a<b<c<d\)

\(E_1(a,b,c,d)=\text{is red}(a,b)\)\(E_{2\sim 6}\) 分别表示 \((a,c),(a,d),(b,c),(b,d),(c,d)\) 之间的情况

\(A_i=\{(a,b,c,d)\mid E_i(a,b,c,d)=1\}\)\(U=\{(a,b,c,d)\}\)

\(S[k]\) 表示取遍集合 \(S\) 所有大小为 \(k\) 的子集,则答案为以下式子的绝对值

\[\begin{aligned} &\left|\bigcap_{i=1}^6 \overline{A_i}\right|-\left|\bigcap_{i=1}^6 A_i\right|\\ =&|U|-\left|\bigcup_{i=1}^6 A_i\right|-\left|\bigcap_{i=1}^6 A_i\right|\\ =&|U|-\sum_{i=1}^6 (-1)^{i-1}\sum_{S\in \{1,2,3,4,5,6\}[i]}\left|\bigcap_{u\in S}A_u\right|-\left|\bigcap_{i=1}^6 A_i\right|\\ =&|U|+\sum_{i=1}^6 (-1)^i\sum_{S\in \{1,2,3,4,5,6\}[i]}\left|\bigcap_{u\in S}A_u\right|-\left|\bigcap_{i=1}^6 A_i\right|\\ =&\binom n4+\sum_{i=1}^5 (-1)^i\sum_{S\in \{1,2,3,4,5,6\}[i]}\left|\bigcap_{u\in S}A_u\right|\\ \end{aligned} \]

原问题拆分为求出 \(\sum_{S\in \{1,2,3,4,5,6\}[i]}\left|\bigcap_{u\in S}A_u\right|\),其中 \(1\le i\le 5\)

\(d_i\) 表示 \(i\) 的度数,\(E\) 为红边集,\(E'=\{(u,v)\mid (u,v)\in E\lor (v,u)\in E,(d_u,u)>(d_v,v)\}\)

\(i=1\) 时,值为包含钦定一条边为红色的四元组数量,显然为 \(m\binom{n-2}{2}\),其中 \(m\) 为钦定的红色边的方案数,\(\binom{n-2}2\) 为剩余两点的方案数

\(i=2\) 时有两种情况,两条红边一端相交或无交:

  • 对于相交的情况,枚举相交的点 \(u\),令 \(T=\sum_{i=1}^u \binom{d_u}2\) 表示不考虑第四个点的方案数,则贡献为 \(T\binom{n-3}1\)(注意 \(\binom x1=[x\ge 1]\ne x\)
  • 对于无交的情况,方案数为所有选择两边的方案数减去选择的两边相交的方案数,为 \(\binom m2-T\)

\(i=3\) 时有三种情况,其中一个点与另外三个点都有红边相连,三个点形成红色三元环,形成长为 \(3\) 的红色链

  • 对于第一种情况,枚举与另外三个点都相连的点 \(u\),贡献为 \(\sum_{i=1}^n \binom{d_i}3\)
  • 对于第二种情况,容易 \(O(m\sqrt m)\) 求出 \(G=(V,E)\) 的所有三元环,令 \(c_3\) 为三元环数,则贡献为 \(c_3\binom{n-3}1\)
  • 对于第三种情况,令 \(c_4=\sum_{(u,v)\in E'}\binom{d_u-1}1\binom{d_v-1}1\),则贡献为 \(c_4-3c_3\)

\(i=4\) 时有两种情况,三元环上挂一个点或形成四元环

  • 对于第一种情况,令之前求出的三元环的集合为 \(C_3\),则贡献为 \(\sum_{(u,v,w)\in C_3}\binom{d_u-2}1\binom{d_v-2}1\binom{d_w-2}1\)
  • 对于第二种情况,容易 \(O(m\sqrt m)\) 求出无向图的四元环数量

\(i=5\) 时,枚举三元环 \((u,v,w)\),令 \(ct_e\) 表示含有边 \(e=(u,v)\) 的三元环数量,则贡献为 \(\sum_E \binom{ct_e}2\)

总时间复杂度 \(O(m\sqrt m)\)

代码

参考

NFLS #P13047. 美元巨大二的二

题意

给定 \(a_{1\sim n}\)\(q\) 次操作,每次给定 \(l,r,k\),对于每个 \(l\le i\le r\)\(a_i\gets k^{a_i}\),或查询 \(a\) 的区间和对 \(p\) 取模,\(n,q,P\le5\times10^4\)

分析

\(md_k=\varphi^k(P)\),其中 \(\varphi^k\) 表示嵌套 \(k\) 层,设 \(c\) 为满足 \(md_c=1\) 的最小值,则可以忽略指数塔 \(c\) 层以上的部分

\(1\sim n\) 每个位置保存列表 \(v_{0\sim c}\),其中 \(i\) 位置的 \(v_x\) 保存 \(a_i\bmod md_x\)

区间和即为 \(v_0\) 之和

对于区间令 \(a_i\gets k^{a_i}\) 的操作,若 \(i\) 在区间中,则令 \(v_x\gets k^{v_{x+1}}\bmod md_{x+1}\)(假定 \(v_{c+1}=0\)),此处假定 \(a\bmod b=\begin{cases}a&a<b\\a\bmod b+b&a\ge b\end{cases}\)(区间和的取模正常)

线段树维护 \(v\),若区间中的 \(v\) 相同则对其变换视为区间覆盖

\(n-1\) 个间隔的势能为令间隔两侧数字相等所需要的操作次数,则初始每个间隔势能为 \(\log P\),每次修改区间两个端点势能增加 \(\log P\),区间中间每个间隔势能减少 \(1\),势能每减少 \(1\) 需要 \(O(\log P)\) 的时间复杂度(对于每个 \(md_i\) 进行 \(O(md_i\sqrt {md_i})\) 的光速幂预处理),时间复杂度为 \(O(n\log^2 P)\)(假定 \(n,q\) 同阶)

总时间复杂度 \(O(n\log^2 P+P\sqrt P)\),使用快速幂则时间复杂度为 \(O(n\log^2 P)\) 可过

代码

参考

比赛结果

\(80+25+0\)\(\text{rk}30\)

posted @ 2025-05-01 09:33  Hstry  阅读(27)  评论(0)    收藏  举报