首页 > 其他分享 >【题解】UOJ#37. [清华集训2014]主旋律

【题解】UOJ#37. [清华集训2014]主旋律

时间:2023-03-16 20:44:57浏览次数:91  
标签:连通 limits 题解 sum 37 cdots UOJ 钦定 分量

我自己写的代码自己都看不懂。

所以芝士一种船新做法,爱来自学弟,lc 学长好工作。

题意

校内 OJ 的题面过于简洁,人话:

给定一个有向的强连通图,问任意删边使得新图仍强连通的方案总数。

答案对 \(10^9 + 7\) 取模。

思路

状压 dp + 容斥。

\(n \leq 15\) 一眼鉴定为状压,令 \(f_S\) 表示点集为 \(S\) 的强连通生成子图数。

考虑到强连通图按强连通分量缩点之后是 DAG,考虑 DAG 的经典套路是钦定出度为 \(0\) 的点进行计数。

只依靠 \(f\) 还是不好转移,考虑容斥成所有方案数减去不强连通的方案数。

令 \(g_S\) 表示点集为 \(S\) 且不强连通的生成子图数,当然后面的 \(g_S\) 还要改定义。

钦定 \(T\) 表示 \(S\) 构成的生成子图中,缩点后出度为 \(0\) 的强连通分量构成的点集。


考虑 \(f, g\) 的直觉转移和一些等量关系:

对于任意的生成子图,考虑如何钦定原图的若干强连通分量得到它:

令 \(E(S, T)\) 表示 \(\sum\limits_{(u, v) \in E} [u \in S, v \in T]\).

先钦定 \(T\) 中的结点分裂成多个强连通分量。

属于 \(S - T\) 的结点之间任意连边,方案数是 \(2^{E(S - T, S - T)}\).

这些结点和 \(T\) 中的结点也任意连边,方案数是 \(2^{E(S - T, T)}\).

有 \(2^{E(S, S)} = \sum\limits_{T \in S} g_T 2^{E(S - T, S - T)} 2^{E(S - T, T)}\).

\(g\) 的转移似乎只需要钦定图中强连通分量的构成:

\(g_S = \sum\limits_{s_1, \cdots, s_k} \prod\limits_{i = 1}^k f_{s_k}\),其中 \(s_1, \cdots, s_k\) 两两不交并且并集为 \(S\),表示 \(S\) 的一种划分.

然而 \(2^{E(S - T, S - T)}\) 种方案中可能有更多出度为 \(0\) 的强连通分量,所以上面都会算重。

于是考虑容斥去重:

\(g_S = \sum\limits_{s_1, \cdots, s_k} (-1)^{k + 1} \prod\limits_{i = 1}^k f_{s_k}\).

钦定此时 \(g\) 中不包含只有 \(S\) 一个强连通分量的情况。

大体证明考虑二项式反演,见 lcw 的博客。


考虑代回到和 \(g\) 有关的式子中:\(2^{E(S, S)} = \sum\limits_{T \in S} g_T 2^{E(S - T, S - T)} 2^{E(S - T, T)}\).

也就是 \(g_S = 2^{E(S, S)} - \sum\limits_{T \in S} g_T 2^{E(S - T, S - T)} 2^{E(S - T, T)}\).

得到 \(g\) 的递推式。

\(f\) 不好做,就用 \(g\) 推 \(f\).

观察联系 \(g, f\) 的式子 \(g_S = \sum\limits_{s_1, \cdots, s_k} (-1)^{k + 1} \prod\limits_{i = 1}^k f_{s_k}\).

进一步化简,只需钦定其中编号最小的点所在的强连通分量,剩下的部分在更小规模的状态算过:\(g_S = - \sum\limits_{s_1 \subseteq S, s_1 \neq \emptyset} f_{s_1} g_{S - s_1}\).

把 \(s_1 = S\),也就是 \(f_S\) 的情况提出来,化简一下得到 \(f_S = g_S + \sum\limits_{s1 \subsetneq S, s_1 \neq \emptyset} f_{s1} g_{S - s_1}\).

标签:连通,limits,题解,sum,37,cdots,UOJ,钦定,分量
From: https://www.cnblogs.com/lingspace/p/uoj37.html

相关文章

  • 江南信息学2023第四周练习20230317 题解
    首先,通报批评上周抄袭题解的同学有:黄耿益,黄远鸿,博客提供题解不是让大家直接复制粘贴抄袭的,而是在大家不会做时提供思路和解决方案,可以抄写,但不允许直接复制粘贴抄袭,请养成......
  • conda 安装 rpy2 版本不匹配问题解决方法
    问题描述:Anaconda3(python3.8)安装rpy2(R4.0.4)时尝试使用condainstallrpy2安装,但是报错如下:UnsatisfiableError:Thefollowingspecificationswerefoundtobein......
  • Codeforces Round 851 (Div. 2) (CF1788) 题解
    CF1788AOneandTwo对于一个序列,题目要求蓝色部分的乘积等于绿色部分的乘积,因为序列中只有\(1\)和\(2\),所以我们只要蓝色部分和绿色部分的\(2\)的数量相等即可,使用......
  • 「题解」洛谷 P5644 [PKUWC2018]猎人杀
    题意:初始有\(n\)个人,每个人的权值是\(w_i\),假设这一轮剩余还没嘎掉的人总权值是\(s\),那么这一轮它有\(\frac{w_i}{s}\)的概率嘎掉。求\(1\)活到最后的概率是多少。......
  • AGC011 题解
    敬告各位:大佬魔怔那叫乐呵,如果实力不够还魔怔那叫小丑。这其实和洛谷灌水区是一个道理,现在灌水区不是流汗就是流汗。虽然有几个真正提问的。[AGC011A]AirportBus普及......
  • 「BZOJ3864」Hero meet devil 题解
    简要题意给你一个只由\(AGCT\)组成的字符串\(S\),对于每个\(0\leqi\leq|S|\),问有多少个只由\(AGCT\)组成的长度为\(m\)的字符串\(T\),使得\(LCS(S,T)=i\)SOLU......
  • [HNOI2015]落忆枫音 题解
    题目背景...题目描述不妨假设枫叶上有n个穴位,穴位的编号为1~n。有若干条有向的脉络连接着这些穴位。穴位和脉络组成一个有向无环图——称之为脉络图(例如图1),穴位的......
  • P35-P37指针6,7,8
    步骤一:char*p1="if";char*p2="for";char*p3="while";......
  • 题解 GDKOI2023 普及 D2T4
    口胡。problem一个图,边带权,有\(k\leq50\)个关键边,对于\(0\leqi\leqk\)求出恰好含有\(i\)条关键边的最小生成树的权值和。\(n\leq10000,m\leq10^6,k\leq50\)......
  • NOI 2008 志愿者招募 题解 (神奇费用流)
    洛谷题目链接思路很清奇的网络流题这种第i天需要至少\(a_i\)人的限制,按常规思路容易想到在i号点和i+1号点之间连一条容量为\(a_i\)的边,并强制流满。但是如果雇佣了一个人......