bzoj3812&uoj37 主旋律】的更多相关文章

正着做不好做,于是我们考虑反着来,如何计算一个点集s的答案呢,一定是所有的方案减去不合法的方案,不合法的方案一定是缩完点后是一个DAG,那么就一定有度数为0的scc,于是我们枚举s的子集,就是说这些点构成的scc的度数为0,这里我们就需要容斥了,容斥的目的是算出s集组成不合法的DAG的方案数,因为我们没有办法确定这里有几个scc.于是我们提前处理出g[s]表示这里面的每种不同scc的方案的贡献是$-1^{num-1}$,然后它们和其余的点之间随便连边,其余的点之间也随便连边,然后g数组我们是枚举…
题意:一个班级n个人,如果a爱b,那么a->b一条有向边.问有多少种删边集合使得图仍然强联通? n<=15.   标程: #include<cstdio> #include<algorithm> #include<cstring> #include<bitset> using namespace std; typedef long long ll; ; ; int read() { ,f=;char ch=getchar(); ;ch=getch…
设f[S]为S点集是SCC的方案数.考虑通过去掉不合法方案转移.可以枚举入度为0的SCC所含点集S',这样显然S^S'内部的边和由S'连向S^S'的边删还是不删任选.但是这样无法保证S'包含所有入度为0的SCC,于是考虑容斥,瞎猜可以得到容斥系数与SCC数量有关,于是设g[i][S]为S包含i个无关SCC的方案数,转移有f[S]=2cnt(S)-Σ(-1)j*g[j][S']*2cnt(S^S')+cnt(S' to S^S'),g的转移通过枚举编号最小点所在SCC实现.注意到g[j][]的贡献…
/* 这道题其实没有看懂 所以整理一下吧 首先思想转化成所有方案减去不强联通的方案 不强联通的方案相当于很多强联通分量缩点后的dag 转化成子问题, 问很多点的dag方案数 然后枚举作为出度为0的点集 T, 然后S - T和T之间的边是随便连的 但是由于S-T中你不能保证不包含出度为0的点, 所以要容斥 最后得到一个式子 f(S) = \sum{T \belong S T != kongji} (-1) ^ {|T| - 1} f(S - T) * 2 ^{way(S - T, T)} ways…
题目描述 求一张有向图的强连通生成子图的数目对 $10^9+7$ 取模的结果. 题解 状压dp+容斥原理 设 $f[i]$ 表示点集 $i$ 强连通生成子图的数目,容易想到使用总方案数 $2^{sum[i]}$ 减去不为强连通图的方案数得到强连通图的方案数,其中 $sum[i]$ 表示点集 $i$ 中边的数目. 考虑什么样的图不是强连通图:缩点后入度为0的强连通分量对应的点集不是全集. 枚举这些入度为0的强连通分量对应的点集,由于无法保证只有这些点构成的入度为0的强连通分量,因此需要进一步容斥.…
传送门 Sol 考虑容斥 强联通图反过来就是一些缩点后的 \(DAG\) 一个套路就是对出(入)度为 \(0\) 的点进行容斥 设 \(g_S,h_S\) 分别表示选了奇数个 \(0\) 入度和偶数个的,集合为 \(S\) 的方案数 那么通过钦定一个特殊的点 \(u\) 有 \[g_S=\sum_{T\subset S,u \in T}f_Th_{S-T}\] \[h_S=\sum_{T\subset S,u \in T}f_Tg_{S-T}\] 那么考虑容斥求出 \(f\),由于 \(g_S\…
直接求出强联通生成子图的数量较难,不妨用所有生成子图的数量减去非强联通的. 非强联通生成子图在所点后满足编号最小的点所在的强联通分量不是全集. 由于$n$很小,我们可以考虑状态压缩. 对于点集$S$,我们钦定一个它的子集$K$入度数为$0$,希望除去$K$以外的$S$度数不为$0$ 设钦定$K$的度数为$0$其他随意的方案数为$H_{S,K}=2^{sum_S-sum_{\{S^K\}\rightarrow\{k\}}}$ 设$G_S$表示$S$分为奇数个强联通分量的方案数减去分为偶数个强联通分…
分析 Miskcoo orz 令\(f[S]\)表示使得\(S\)这个点集强连通的方案数. 然后呢?不会了 考虑到将一个有向图SCC缩点后,得到的新图是一个DAG,所以我们可以类比带标号DAG计数的解法来寻找这道题的突破口. 我们可以枚举哪些点所构成的SCC在缩点后入度为\(0\),然后令\(g[S]\)表示使\(S\)这个点集缩点后是一堆强连通分量且之间不存在边的方案数(不然入度就不是\(0\)了),可以得到下面这个递推式: \[f[S]=2^{cnt[S]}-\sum_{T \subsete…
http://uoj.ac/problem/37 题解 题目是让我们求出有多少个边集可以使这张图强连通. 先补集转化一下,求这张图不强连通的方案数. 我们考虑这样的图缩完点之后的情况,既然不强连通,那么它就是个\(DAG\). 回顾一下有向图\(DAG\)计数的方法. 每次新加入一层入度为\(0\)的点,向之前的点连边.但这时我们不能保证我们枚举的点就是全部入度为\(0\)的,所以我们还需要容斥. \[ f[S]=\sum_{T\subset S}(-1)^{|T|}f[S-T]2^{edge(…
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=3812 题解 考虑对于图的联通性的 DP 的一般套路:总方案 - 不连通的方案. 那么我们只需要求出使得整个图不强联通的方案数即可. 假设我们钦定了一个 \(p\) 点,然后通过枚举包含 \(p\) 点的强连通分量来转移.但是会遇到一些问题:不像无向图,无向图的不连通只需要保证没有边相连就可以了,但是有向图不行. 有向图一定可以被缩点成一个 DAG,然后 \(p\) 点所在的连通块可能会连入边…