jzoj5230 隊伍統計 (B組 Day9)

2021-09-10 07:06:22 字數 996 閱讀 9290

現在有n個人要排成一列,編號為1->n 。但由於一些不明原因的關係,人與人之間可能存在一些矛盾關係,具體有m條矛盾關係(u,v),表示編號為u的人想要排在編號為v的人前面。要使得隊伍和諧,最多不能違背k條矛盾關係(即不能有超過k條矛盾關係(u,v),滿足最後v排在了u前面)。問有多少合法的排列。答案對10^9+7取模。

輸入檔名為count.in。

第一行包括三個整數n,m,k。

接下來m行,每行兩個整數u,v,描述乙個矛盾關係(u,v)。

保證不存在兩對矛盾關係(u,v),(x,y),使得u=x且v=y 。

輸出檔名為count.out。

輸出包括一行表示合法的排列數。

輸入1:

4 2 1

1 34 2

輸入2:

10 12 3

2 66 10

1 74 1

6 12 4

7 61 4

10 4

10 9

5 98 10

輸出1:

輸出2:對於30%的資料,n<=10

對於60%的資料,n<=15

對應100%的資料,n,k<=20,m<=n*(n-1),保證矛盾關係不重複。

#include#include#include#include#includeusing namespace std;

int const mod=1e9+7;

int a[21],f[1<<21][21],t[1<<21];

int n,m,k,ans;

int main ()

for (int i=0;i<=(1<} f[0][0]=1;

for(int i=0;i<=(1

if(f[i][j])

}for (int i=0;i<=k;i++)

ans=(ans+f[(1

}

Jzoj5230 隊伍統計

現在有n個人要排成一列,編號為1 n 但由於一些不明原因的關係,人與人之間可能存在一些矛盾關係,具體有m條矛盾關係 u,v 表示編號為u的人想要排在編號為v的人前面。要使得隊伍和諧,最多不能違背k條矛盾關係 即不能有超過k條矛盾關係 u,v 滿足最後v排在了u前面 問有多少合法的排列。答案對10 9...

jzoj5230 隊伍統計 狀壓dp

n nn個人排隊,m mm個條件 u,v u,v u,v 表示u uu要排在v vv前,可以去掉k kk個,求方案總數 考慮依次插入人在隊頭 對於狀態1表示已經在佇列裡,0表示不在 f i,jf fi,j 表示i ii表示狀態,j jj表示違背了的條件個數。然後列舉隊頭的是哪個人,計算出插入他前的狀...

jzoj 5230 隊伍統計 狀態壓縮DP

description 現在有n個人要排成一列,編號為1 n 但由於一些不明原因的關係,人與人之間可能存在一些矛盾關係,具體有m條矛盾關係 u,v 表示編號為u的人想要排在編號為v的人前面。要使得隊伍和諧,最多不能違背k條矛盾關係 即不能有超過k條矛盾關係 u,v 滿足最後v排在了u前面 問有多少合...