【uoj#37/bzoj3812】[清華集訓2014]主旋律 狀壓dp+容斥原理

題目描述

求一張有向圖的強連通生成子圖的數目對 $10^9+7$ 取模的結果。


題解

狀壓dp+容斥原理

設 $f[i]$ 表示點集 $i$ 強連通生成子圖的數目,容易想到使用總方案數 $2^{sum[i]}$ 減去不為強連通圖的方案數得到強連通圖的方案數,其中 $sum[i]$ 表示點集 $i$ 中邊的數目。

考慮什么樣的圖不是強連通圖:縮點后入度為0的強連通分量對應的點集不是全集。

枚舉這些入度為0的強連通分量對應的點集,由于無法保證只有這些點構成的入度為0的強連通分量,因此需要進一步容斥。推之可以發現容斥系數與這些點形成的強連通分量數目的奇偶性有關。

更具體來講,形成奇數個強連通分量時容斥系數為正(即減去),形成偶數個強連通分量為負(即加上)。

設 $g[i]=i個點形成奇數個強連通分量的方案數-i個點形成偶數個強連通分量的方案數$ ,那么枚舉 $i$ 中編號最小的點所在連通塊 $i-j$ (即枚舉剩下部分 $x$ 不與編號最小的點相連的強連通分量 $j$ ),則有 $g[i]=-\sum\limits_{j\subset x}f[i-j]·g[j]$ 。注意此時的 $g$ 不包含 $i$ 只形成一個強連通分量的情況,以便下面 $f$ 的容斥。

那么枚舉欽定的入度為0的強連通分量 $j$ ,就有 $f$ 的轉移:$f[i]=2^{sum[i]}-\sum\limits_{j\subset i}2^{sum[i]-w[j]}·g[j]$ ,其中 $w[j]$ 表示 $i$ 向 $j$ 連邊的數目,表示欽定的點不能被連邊,其它的隨意連。

最后將只有一個強連通分量的方案 $f[i]$ 算進 $g[i]$ 。

答案就是 $f[2^n-1]$ 。

時間復雜度 $O(3^n)$?

#include <cstdio>
#define N 32775
#define mod 1000000007
typedef long long ll;
int in[N] , out[N] , cnt[N] , sum[N] , w[N];
ll b[215] , f[N] , g[N];
void dfs(int i , int j)
{if(i & (j - 1)) dfs(i , i & (j - 1));w[j] = w[j - (j & -j)] + cnt[in[j & -j] & i];
}
int main()
{int n , m , i , j , x , y;scanf("%d%d" , &n , &m);b[0] = 1;for(i = 1 ; i <= m ; i ++ ){scanf("%d%d" , &x , &y) , x -- , y -- ;in[1 << y] |= 1 << x , out[1 << x] |= 1 << y;b[i] = b[i - 1] * 2 % mod;}for(i = 1 ; i < (1 << n) ; i ++ ){x = i - (i & -i) , cnt[i] = cnt[x] + 1 , sum[i] = sum[x] + cnt[in[i & -i] & i] + cnt[out[i & -i] & i] , f[i] = b[sum[i]];dfs(i , i);for(j = x ; j ; j = x & (j - 1)) g[i] = (g[i] - f[i ^ j] * g[j] % mod + mod) % mod;for(j = i ; j ; j = i & (j - 1)) f[i] = (f[i] - b[sum[i] - w[j]] * g[j] % mod + mod) % mod;g[i] = (g[i] + f[i]) % mod;}printf("%lld\n" , f[(1 << n) - 1]);return 0;
}

?

轉載于:https://www.cnblogs.com/GXZlegend/p/8678089.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453113.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453113.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453113.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

交換機實現虛擬局域網

但由于它是邏輯地而不是物理地劃分&#xff0c;所以同一個 VLAN內的各個工作站無須被放置在同一個物理空間里&#xff0c;即這些工作站不一定屬于同一個物理LAN網段。一個VLAN內部的廣播和單播流量都不會轉發到其他 VLAN中&#xff0c;即使是兩臺計算機有著同樣的網段&#xff…

產品與項目

產品和項目到底有什么區別&#xff0c;擴展開說&#xff0c;做產品和做項目最大的不同在哪里&#xff1f;產品經理和項目經理&#xff08;都是PM&#xff0c;有時候自己都搞不清說的哪一個&#xff09;職責的不同在哪里&#xff1f;一直困擾了我很長時間&#xff0c;直到2007年…

python斐波那契前20遞歸_算法python實現經典遞歸問題(漢諾塔, 斐波那契數列,階乘)...

經典遞歸漢諾塔問題背景故事傳說印度某間寺院有三根柱子&#xff0c;上串64個金盤。寺院里的僧侶依照一個古老的預言&#xff0c;以上述規則移動這些盤子&#xff1b;預言說當這些盤子移動完畢&#xff0c;世界就會滅亡。這個傳說叫做梵天寺之塔問題(Tower of Brahma puzzle)。…

Hello This Cruel World!

第一天&#xff0c;已經成為了半年的OIer&#xff0c;仍然是個蒟蒻&#xff0c;希望以后能夠變強&#xff01; 在OJ和博客的常用網名&#xff1a; TimeTraveller ->洛谷 VictoryCzt ->csdn,cnblog等 Czt Czttt czt ->OJ CrazyTea CrazyTeaMajor 游戲&#xff0c;QQ…

計算機系統的部件名稱作用,電腦配件與每個配件作用詳細完整的解釋

電腦各配件的具體功能和特性說起來很長&#xff0c;先簡單介紹一下。一臺個人臺式電腦的主要配件有&#xff1a;1.主板&#xff1a;也叫母板&#xff0c;是連接CPU、內存、AGP等電腦配件的最主要最基本的載體&#xff0c;主板的結構類型決定電腦各配件的結構和類型&#xff0c;…

信道效率以及信道的吞吐率

信道的效率即為信道的利用率&#xff0c;是指發送方在一個發送周期的時間內&#xff0c;有效的發送數據所需要的時間占整個發送周期的比率。 例如,發送方從開始發送數據&#xff0c;到收到第一個確認幀為止&#xff0c;稱為一個周期&#xff0c;設為T。發送方在這個周期內共發…

jquery兄弟標簽_js jquery獲取當前元素的兄弟級 上一個 下一個元素

var chils s.childNodes; //得到s的全部子節點var pars.parentNode; //得到s的父節點var nss.nextSbiling; //獲得s的下一個兄弟節點var pss.previousSbiling; //得到s的上一個兄弟節點var fcs.firstChild; //獲得s的第一個子節點var lcs.lastChile; //獲得s的最后一…

將本地代碼備份到Github public repository

1. 在本地代碼所在的文件夾中初始化&#xff0c;即打開powershell&#xff0c;輸入下面命令 git init 此時本地文件夾中會出現一個.git的隱藏文件夾。 2. 然后將當前的文檔commit&#xff0c;在本地commit之前可以先加一個.gitignore文件&#xff0c;忽略一些不必要的文件&…

推辭掉得不是你的工作,而是你的未來

在民營企業&#xff0c;年輕人無疑是主力&#xff0c;為什么年紀相仿&#xff0c;他是經理&#xff0c;我卻是職員&#xff1f;相信對此憤恨不平的大有人在&#xff01;說什么人家后臺硬、或者別人嘴巴甜&#xff0c;恨自己生不逢時、怨自己出身平凡的居多&#xff0c;相反檢討…

路考計算機系統評判,科目三智能考試有效解決路考舞弊行為

科目三智能考試是指通過在考試車輛上加裝計算機、定位系統、傳感器、音視頻采集等設備實現對考試項目的自動化評判&#xff0c;代替原來人工評判&#xff0c;且記錄考試過程的音視頻資料&#xff0c;提供考試過程回放等相關功能。科目三自動化考試減少了人為因素對考試過程的干…

跟我一起玩Win32開發(20):瀏覽文件夾

最近忙于一些相當無聊的事情&#xff0c;還沒忙完&#xff0c;不過&#xff0c;博客還是要寫的&#xff0c;不然我頭頂上會多了幾塊磚頭。 在上一篇博文中&#xff0c;我們瀏覽了文件&#xff0c;今天我們也瀏覽一下目錄&#xff0c;如何&#xff1f; 瀏覽目錄我們同樣有兩個規…

什么材料反射熱量好_封陽臺用什么材料好,封陽臺用什么玻璃好

展開全部陽臺是建e68a8462616964757a686964616f31333433663065筑物室內的擴張&#xff0c;是居住者吸取新鮮空氣、曬各種衣物、放置盆栽的場地方&#xff0c;其裝修需要顧及實用更要注重美觀問題。封陽臺的優點1、具有保暖等的作用。陽臺封閉后&#xff0c;多了一層抵擋塵埃和噪…

k8s實戰之從私有倉庫拉取鏡像 - kubernetes

1、實戰目的 從私有docker倉庫拉取鏡像&#xff0c;部署pod。上一篇中&#xff0c;我們搭建了私有的鏡像倉庫&#xff0c;這一篇我們將與k8s結合實戰使用私有倉庫。 2、登錄docker 為了完成本次實戰&#xff0c;需要登錄docker&#xff0c;如下&#xff1a; 3、為k8s集群創建Se…

李開復評價馬斯克:他真正的目的是把人變成半機械人

本文來自AI新媒體量子位&#xff08;QbitAI&#xff09;李開復在昨日接受Quartz的采訪時說&#xff0c;伊隆馬斯克在用太陽能汽車和腦部醫療植入物做誘餌掩飾他真正的目的&#xff1a;改變從傳統電力公司獲得能源的方式&#xff0c;并且將人類變成半機械人。 △ 伊隆馬斯克 李開…

《那些年啊,那些事——一個程序員的奮斗史》

段伏櫪&#xff0c;一個瘦小&#xff0c;矮小&#xff0c;根本和“帥”這個字粘不上任何關系的普通人。名字的來源在于其多讀了幾年書的老爹&#xff0c;總抱著有一天要出書出名乃至于名流千古的美好理想&#xff0c;但可惜現實總是給予他無情的而又現實的打擊&#xff0c;于是…

計算機機房安全風險防控規范,中心機房安全風險分析一覽表

《中心機房安全風險分析一覽表》由會員分享&#xff0c;可在線閱讀&#xff0c;更多相關《中心機房安全風險分析一覽表(6頁珍藏版)》請在人人文庫網上搜索。1、中心機房安全風險分析一覽表組件構件丿元糸風險點物理環境 及保障物理環境場地場地選址不當場地安全措施不當自然災害…

c語言的翻譯叫什么_什么是編譯器?什么是集成開發環境?

我們平時所說的程序&#xff0c;是指雙擊后就可以直接運行的程序&#xff0c;這樣的程序被稱為可執行程序&#xff08;Executable Program&#xff09;。在 Windows 下&#xff0c;可執行程序的后綴有 .exe 和 .com&#xff08;其中 .exe 比較常見&#xff09;&#xff1b;在類…