2023.9.25 闲话

掉蓝名了 /kk

关于昨天的内容,其实我对于建立架空公理体系是非常愉悦的 . 有些地方可能出现一些迷惑内容,注意如果你对一个对象 \(\rm span\)\(\eta\) 肯定会损失信息,我暂且用这个理由搪塞过去 .

不过 fangzichang 竟然关注了我,喜了 .

我感觉这样的问题应该都是可做的,\(f\) 单调:

给一棵无权\(\mathcal T\),每次给三个正整数 \(l,r,x\),求 \(\min\limits_{y\in[l,r]}\{f(\operatorname{dist}(x,y)\}\) .

\(n,q\le 10^5\) .

推歌:Amadeus - めりろれっく feat. 重音テト .

abstract

为 SoyTony 说的「LOCG 式容斥」做一些注解 . 下文 \(\subset\) 是真子集 .

LOCG 式容斥:大概就是你要对满足某些条件的连通图计数,不连通的好算,然后你要容斥算出连通的 . 常见的做法是枚举某个点所在连通块 .

因为一般都是卷积形式所以可以用某些科技优化,不过一般不需要 .

建造游乐园

计数 \(n\) 个点的可以通过恰好一次添加一条不在图中的边或是删去一条图中的边使得图中存在一条欧拉回路的简单无向图的个数,答案对 \(10^9+7\) 取模 .

\(2\le n\le 2000\) .

答案即为连通欧拉图数量乘 \(\binom n2\) .

\(f_i\) 是答案,\(g_i\) 是每个节点度为偶数的图(也就是不一定连通的欧拉图),显然可以得到 \(g_n=2^{\binom{n-1}2}\) .

枚举有多少个点和 \(1\) 在同一连通块,可以得到

\[f_i=g_i-\sum_{j=1}^{i-1}\dbinom{i-1}{j-1}f_ig_{i-j} \]

直接做,时间复杂度 \(\Theta(n^2)\) .

ARC105F Lights Out on Connected Graph

给一个 \(n\) 个点 \(m\) 条边的无向图,问有多少导出子图是连通二分图,对 \(998244353\) 取模 .

\(1\le n\le 17\) .

真打出场 .

对于一个点集 \(S\),考虑有多少种连边方案使得其为连通二分图 . 那么容斥一下需要排掉不连通和不是二分图的情况,对于不连通的情况,枚举 1 号点所在连通块即可(在上一个题中我们已经了解了这类方法),所以只需要计算对于某个点集随便选边中二分图的数量 .

枚举左部点 \(S_1\subseteq S\),那么答案就是 \(\displaystyle\prod_{i\in S_1}2^{|T_i\cap(S\setminus S_1)|}\),其中 \(T_i\) 是与 \(i\) 有边的点的集合 .

转为先枚举 \(S\setminus S_1\),然后枚举 \(S_1\),进而确定 \(S=(S\setminus S_1)\cup S_1\) . 只需要考虑每次 \(S_1\) 中增加一个元素的影响,这是容易计算的 .

这种算法会有一些算重的要排一下 .

时间复杂度为 \(\Theta(3^n)\) .

UTR #2 题目交流通道

给一张无向完全图任意两点间最短路,边权是不大于 \(k\) 的自然数,问边权分配方案数,对 \(998244353\) 取模 .

\(1\le n\le 400\)\(0\le k\le 10^9\) .

\(d_{u,v}\)\(u\)\(v\) 的最短路 .

首先判无解,如果存在一组 \(i,j,k\) 满足下面任一就无解:\(d_{i,j}>k\)\(d_{i,i}\neq 0\)\(d_{i,j}\neq d_{j,i}\)\(d_{i,j}>d_{i,k}+d_{k,j}\) .

对于 \(d_{u,v}>0\) 的情况,只需要对于每条边 \((u,v)\) 判断是否存在一个点 \(k\) 满足 \(d_{u,v}=d_{u,k}+d_{k,v}\),如果不存在这样的 \(k\),那么这条边的权值就只能是 \(d_{u,v}\),否则这条边只要大于等于 \(d_{u,v}\) 就可以了 . 找完之和把所有边的方案乘起来即可 .

\(d_{u,v}\) 可能等于 \(0\),则缩起来所有 \(d_{u,v}=0\) 的边构成的团,团间和上面做法类似,对于团内的方案,考虑容斥,令 \(f_i\)\(n\) 个点的距离为 \(0\) 的团的方案数,\(g_i\)\(n\) 个点的图的方案数,则

\[\begin{aligned}g_n&=(k+1)^{\binom n2}\\\displaystyle f_n&=g_n-\sum_{i=1}^{n-1}\dbinom{n-1}{i-1}f_ig_{n-i}\cdot k^{i(n-i)}\end{aligned} \]

那么就 \(\Theta(n^3)\) 解决了这个题 .

还是看一道新题吧:

ABC321G Electric Circuit

\(n\) 个普通点,\(m\) 个红点 \(r_{1\dots m}\)\(m\) 个蓝点 \(b_{1\dots m}\),初始红、蓝点和普通点之间有一些连边 .

对于 \(1\dots m\) 的随机排列 \(\pi\),问连边 \(r_i-b_{\pi_i}\) 后,连通块个数的期望,对 \(998244353\) 取模 .

\(1\le n\le 17\)\(1\le m\le 10^5\) .

啊,代入感很强 .

考虑对于一个普通点集 \(S\),算 \(S\) 连通的方案数 \(f_S\),钦定一个元素排掉就可以了 . 令 \(c(S)\)\(S\) 所连的红、蓝点的个数(肯定需要红点个数等于蓝点个数),则:

\[f_S=c(S)!-\sum_{T\subseteq S\land x\in T}f_T\cdot c(S\setminus T)! \]

其中 \(x\)\(S\) 中在某种顺序上的最值,可以直接取 lowbit .

把连通块拼起来的做法是类似的,令 \(g_S\) 表示连通块个数,\(h_S\) 表示方案数,那么有转移:

\[\begin{aligned}&g_S=\sum_{T\subset S\land x\in T}(g_{S\setminus T}+h_{S\setminus T})\cdot f_T\\&h_S=\sum_{T\subset S\land x\in T}h_{S\setminus T}\cdot f_T\end{aligned} \]

这样就可以算了,时间复杂度 \(\Theta(3^n)\) .


后面的内容不建议阅读 .

集训队作业 2013 城市规划

计数 \(n\) 个点的有标号无向连通图数量,对 \(1004535809\) 取模 .

\(1\le n\le 130000\) .

根据建造游乐园的推法最终答案就是:

\[f_i=2^{\binom i2}-\sum_{j=1}^{i-1}\dbinom{i-1}{j-1}f_i2^{\binom{i-j}2} \]

半在线卷积 \(\Theta(\mathsf S(n))\),多项式求逆 \(\Theta(\mathsf M(n))\) .

有标号强连通图计数

计数 \(n\) 个点的有标号强连通图的数量,对 \(998244353\) 取模 .

\(1\le n\le 10^5\) .

\(f_n\) 表示 \(n\) 个点的强连通森林中奇数个连通块对答案贡献为正、偶数个为负的答案,\(g_n\) 表示 \(n\) 个点的强连通图的数量,\(h_n\) 表示 \(n\) 个点的图的数量,则:

\[\begin{aligned}&h_n=\sum_{k=1}^n\dbinom nkh_{n-k}f_k2^{k(n-k)}\\&f_n=g_n-\sum_{i=1}^n\dbinom{n-1}{k-1}g_kf_{n-k}\end{aligned} \]

(第一个式子:每个点表示一个强连通块)

考虑怎么把变换反过来就可以了,时间复杂度 \(\Theta(\mathsf S(n))\) 或者 \(\Theta(\mathsf M(n))\) .

关于怎么把过程倒过来,或许可以参考转置原理 .

有标号二分图计数

计数 \(n\) 个点的有标号二分图的数量,对 \(998244353\) 取模 .

\(1\le n\le 10^5\) .

对于一个组合类 \(\mathcal A\),其计数序列为 \(\{a\}\),则定义 \(\mathcal F(\mathcal A)\) 的计数序列 \(\{f\}\) 满足:

\[f_n=a_n-\dfrac1n\sum_{i=1}^{n-1}f_ia_{n-i} \]

记:

  • 黑白染色二分图的组合类为 \(\mathcal B^{\bullet}\) .
  • 连通黑白染色二分图的组合类为 \(\mathcal C^{\bullet}\) .
  • 二分图的组合类为 \(\mathcal B\) .
  • 连通二分图的组合类为 \(\mathcal C\) .

显然有 \(\mathcal B^{\bullet}\) 的计数序列 \(\{t\}\)

\[t_n=\sum_{i=1}^n\dbinom ni2^{i(n-i)} \]

则有 \(\mathcal C^{\bullet}=\mathcal F(\mathcal B^{\bullet})\)\(\mathcal C=\frac{C^{\bullet}}2\)\(\mathcal B=\mathcal F^{-1}(\mathcal C)\),从而可以依次求出 \(\mathcal B\) .

时间复杂度 \(\Theta(\mathsf S(n))\) 或者 \(\Theta(\mathsf M(n))\) .

连在一起的幻想乡 P

\(n\) 个点的有标号无向连通图中边数的 \(k\) 次方和 .

【此处有数据范围】

首先算任意无向图的方案,记 \(E(G)\)\(G\) 的边数:

\[\begin{aligned}f_k(n)&=\sum_{S}G(S)^k\\&=\sum_{S}\sum_{j=0}^k{k\brace j}\dbinom{E(S)}jj!\\&=\sum_{j=0}^k{k\brace j}j!\sum_G\dbinom{E(G)}j\\&=\sum_{j=0}^k{k\brace j}j!\dbinom{\binom n2}j2^{\binom n2-j}\end{aligned} \]

对于连通图的,容斥:

\[f_k(n)=\sum_{i=1}^n\dbinom{n-1}{i-1}\sum_{r=0}^kf_r(n-k)g_{k-r}(k) \]

将过程倒过来即可 .

主旋律

给一张 \(n\) 个点的有向图,问它有多少个强连通的生成子图 .

\(1\le n\le 15\) .

枚举每个 SCC,令 \(f_S\) 表示 \(S\) 的强连通生成子图个数,\(g_S\) 表示强连通生成子图中奇数个 SCC 对答案贡献为正、偶数个为负的答案,\(E(S)\) 表示 \(S\) 的边数,则:

\[\begin{aligned}&f(S)=2^{E(S)}-\sum_{T\subseteq S\land T\neq\varnothing}g(T)2^{w(T,S\setminus T)}2^{h(S\setminus T)}\\&g(S)=f(S)-\sum_{T\subset S\land T\neq\varnothing\land p\in T}f(T)g(S-T)\end{aligned} \]

时间复杂度 \(\Theta(3^n)\) .

posted @ 2023-09-25 06:31  Jijidawang  阅读(74)  评论(1编辑  收藏  举报
😅​