NOI模拟赛 #2

T1 欧拉子图

给一个无向图,如果一个边集的导出子图是一个欧拉回路,则 ans 加上这个边集边数的平方,求 ans ,膜 998244353

$n,m \leq 152501$

sol:

考虑如果边数不是平方,而是一次方,那对于每个边,它对 ans 的贡献就是强行选它的方案数

如果是平方,贡献就是枚举两个边 $x,y$ ( $x,y$ 可以相同),计算强制选它们的方案数

Task #1 $n \leq 60,m \leq 100$

需要一个多项式算法计算强制包含两条边的欧拉子图方案数

我们把每个点看成一个关于度数的方程,设 $x_i$ 表示第 i 条边选不选,对第 j 个方程 $a_{(j,i)}$ 为 [第 i 条边的端点为 j]

因为每个点度数都要为偶数,于是方程的右边都要在膜 2 意义下为 0

钦定两条边选不选很简单,加 $x_a = 1$ 和 $x_b = 1$ 两个方程即可,这个方程组有多少解,强行选这两个边的方案数就有多少

高斯消元,方案数就是 $2^c$ (c 为自由元个数)

因为在膜 2 意义下进行,可以 bitset 优化一下,复杂度 $O(\frac{n^2 \times m^3}{64})$,这个数据范围很好过

bitset 实战很快,可以在 1s 内消 2000 的 xor 方程组


Task #2 $n,m \leq 300$

随便搞一个 dfs 树,“强制选两个边”就是删掉两条边,钦定一些点度数为奇数,剩下为偶数,可以强行 dp 一下,由于跟正解没啥关系,略去


Task #正解 $n,m \leq 152501$

延续 Task #1 的思路,注意到不同连通分量是独立的

对于一个连通图有多少个欧拉子图呢?观察方程组可以发现是 $2^{m-n+1}$ 个

不连通呢?设 $s$ 为联通块个数,发现是 $2^{m-n+s}$ 个

现在我们要钦定选两条边,发现如果钦定到了一条桥边,肯定是不行的,因为桥两边度全变成了奇数,而之后只能不断加若干偶数

然后发现,删掉两条不是桥的边,其实是可以改变图连通性的,如果连通性不变,连通块是 $2^{m-n+s-2}$ 个,如果改变,连通块是 $2^{m-n+s-1}$ 个

于是问题变成了“有多少种 [删掉两条都不是桥边的边] 的方式,使得图不连通”

前置问题:DZY Loves Chinese II (直接放链接了)

给一个无向图,每次询问如果删掉一个边集,图是否依然连通,每次删掉的边集大小不超过 15

还是非树边 ran 一下,树边 xor 一下,如果两个边权值一样,删掉它们就会改变连通性,用 map 记一下每种权值就可以了

复杂度 $O(mlogm)$

T2 求和

求一个积性函数前缀和,这个函数满足 $f_{p^d} = p^{d-[d \space mod \space p ≠ 0]}$

Task #1 $n \leq 10^7$

线性筛基本操作


Task #2 & #3 $n \leq 10^{12}$

杜教筛基本操作,写的不好只能过 $n \leq 10^9$ 的点

但出题人说 Task #2 是给分块打表的...

打表之后就是一个区间筛,我们把不超过 $\sqrt{n}$的素数加进去筛一下就行了


Task #正解 $n \leq 10^{14}$

构造 $ G = F * μ $ (狄利克雷卷积),显然当 $d = 1$ 时 $G(p) = 0$

[狄利克雷卷积] $μ * 1 = [n=1]$,$\phi * 1 = n$

$G_n = \sum_{d|n}f_d \times μ_{\frac{n}{d}}$

发现 $G_{p^c} = f_{p^c} - f_{p^{(c-1)}}$

$G_p = f_p \times μ_1 + f_1 \times μ_p = 0$

然后 $G_n = G_{p_1^{c_1}} \times G_{p_2^{c_2}} \times ... \times G_{p_n^{c_n}}$

于是 $n = a^2 \times b^3$

莫比乌斯反演 :$G = f * μ$ 则 $f = G * 1$

$f_n = \sum_{d|n}G_d$

$f_i = \sum_{i=1}^n \sum_{d|i}G_d = \sum_{d=1}^{n}G_d \times \lfloor \frac{n}{d} \rfloor$

满足 $n = a^2 \times b^3$ 的 $n$ 的数量是 $O(\sqrt{n})$ 的,搜出来即可

T3 数学难题


Task #1 & #2 $n \leq 1000$

$F_{(i,j)} = \frac{(i+1)!}{j!(i-j)!}$

发现矩阵是杨辉三角的第 i 行乘以 i 的值,暴力即可

Task #正解 $n \leq 152501$

构造一下可以发现答案是 $lcm(n-k+1,n-k+2,...,n)$

线段树即可

猜你喜欢

转载自www.cnblogs.com/Kong-Ruo/p/10060440.html