日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

bzoj2560串珠子 状压dp+容斥(?)

發(fā)布時(shí)間:2025/4/16 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bzoj2560串珠子 状压dp+容斥(?) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2560: 串珠子

Time Limit: 10 Sec? Memory Limit: 128 MB
Submit: 515? Solved: 348
[Submit][Status][Discuss]

Description

  銘銘有n個(gè)十分漂亮的珠子和若干根顏色不同的繩子。現(xiàn)在銘銘想用繩子把所有的珠子連接成一個(gè)整體。
  現(xiàn)在已知所有珠子互不相同,用整數(shù)1到n編號(hào)。對(duì)于第i個(gè)珠子和第j個(gè)珠子,可以選擇不用繩子連接,或者在ci,j根不同顏色的繩子中選擇一根將它們連接。如果把珠子看作點(diǎn),把繩子看作邊,將所有珠子連成一個(gè)整體即為所有點(diǎn)構(gòu)成一個(gè)連通圖。特別地,珠子不能和自己連接。
  銘銘希望知道總共有多少種不同的方案將所有珠子連成一個(gè)整體。由于答案可能很大,因此只需輸出答案對(duì)1000000007取模的結(jié)果。

Input

 標(biāo)準(zhǔn)輸入。輸入第一行包含一個(gè)正整數(shù)n,表示珠子的個(gè)數(shù)。接下來n行,每行包含n個(gè)非負(fù)整數(shù),用空格隔開。這n行中,第i行第j個(gè)數(shù)為ci,j。

Output

 標(biāo)準(zhǔn)輸出。輸出一行一個(gè)整數(shù),為連接方案數(shù)對(duì)1000000007取模的結(jié)果。

Sample Input

3
0 2 3
2 0 4
3 4 0

Sample Output

50

HINT

  對(duì)于100%的數(shù)據(jù),n為正整數(shù),所有的ci,j為非負(fù)整數(shù)且不超過1000000007。保證ci,j=cj,i。每組數(shù)據(jù)的n值如下表所示。
編號(hào) 1 2 3 4 5 6 7 8 9 10??
n????? 8 9 9 10 11 12 13 14 15 16?

Source

2012國家集訓(xùn)隊(duì)Round 1 day1

?

感覺還是有點(diǎn)不懂,這個(gè)dp來的莫名其妙
g[s]表示狀態(tài)為s的點(diǎn)之間任意連邊方案數(shù)
f[s]表示s點(diǎn)集構(gòu)成連通塊方案數(shù)
g[]很容易求

現(xiàn)在考慮f[s]應(yīng)該怎么求
枚舉s子集 把s劃分成2個(gè)部分s1,s2,f[s]+=f[s1]*g[s2]
為什么這么轉(zhuǎn)移可以得到答案呢?
因?yàn)檫@樣可以保證s1和s2之間相互沒有連邊且可以枚舉完所有子集情況又不會(huì)重復(fù)
感性理解。。

?

#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define mod 1000000007 #define N 20 #define M 101000 using namespace std; int n,S,a[N][N]; long long f[M],g[M];int main() {int i,j,k,now;scanf("%d",&n);for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%d",&a[i][j]);S=1<<n;for(i=1;i<S;i++){g[i]=1;for(j=0;j<n;j++)if(i&(1<<j))for(k=j+1;k<n;k++)if(i&(1<<k))g[i]=g[i]*(a[j][k]+1)%mod;f[i]=g[i];for(j=n-1;j+1;j--)if(i&(1<<j)){now=j;break;}now=i^(1<<now);for(j=now;j;j=(j-1)&now)f[i]=(f[i]-g[j]*f[i^j]%mod+mod)%mod;}cout<<f[S-1]; }

轉(zhuǎn)載于:https://www.cnblogs.com/wsy01/p/8031101.html

總結(jié)

以上是生活随笔為你收集整理的bzoj2560串珠子 状压dp+容斥(?)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。