BZOJ 3579 破冰派對 搜尋

2021-09-08 17:26:44 字數 2944 閱讀 5230

由於計算機系的同學們都很宅,很多同學雖然身在乙個系,但是入學很久還是相互不認識。學生會主席小y希望舉辦一次破冰派對,要讓同學們多從寢室裡走出來參加娛樂活動,也要讓盡量多不認識的同學們通過活動相互認識。自然的,如果參加活動的同學互相都不認識,那便是極好的。?

要辦一次成功的派對是很不容易的,不光需要有同學參加,優秀的工作人員也是必不可少的。他們需要為派對的籌辦付出很多的努力,因此乙個和諧的團隊是非常重要的。小y希望所有工作人員都是相互認識的。

計算機系一共有n個同學,所有同學從1到n編號。有m對同學相互認識,而其餘的同學相互不認識。

小y希望從中選出一些工作人員組成工作團隊,讓這個工作團隊負責活動的組織,而其餘的所有非工作人員,就自然都成為了活動的參與者。小y要求:

1、工作團隊的成員必須相互認識;

2、參與活動的同學必須相互不認識;

3、至少有乙個同學參與活動,也至少有乙個同學是工作人員。

小y想知道,一共有多少種工作團隊的選擇方案呢?

這題一開始分析了一下,覺得方案好像不是很多,因為限制很多,但是看到有個模數,以為會很多,但其實這個模數是假的……

而且單獨求最大團是個npc問題,是只能搜的,現在這題加了個限制,其實也只能搜。但是我比較辣雞沒敢寫。

說一下剪枝吧。一開始先把一些必須工作或參與活動的人選出來,然後把這些已經確定的點刪掉,得到很多連通塊,最多只有乙個是多於乙個點的,否則無解(這個顯然),只用在那個裡面搜就行了。如果全部連通塊都是乙個點的,那麼方案數就是連通塊數+1+1

+1。

#include

using

namespace std;

#define ll long long

#define pa pair

const

int maxn=

1010

;const

int mod=

1000003

;int

read()

while

(ch>=

'0'&&ch<=

'9')x=

(x<<3)

+(x<<1)

+(ch^48)

,ch=

getchar()

;return x*f;

}int n,m,ans,tmp[maxn]

,lt;

bool mark[maxn]

;bitsetf[maxn]

,c[2

],z;

struct edgee[maxn*maxn<<1]

;int last[maxn]

,len;

void

ins(

int x,

int y)

int p[maxn]

;//-1不確定 0工作 1活動

void

dfs(

int x)

if(p[x]!=-

1)if(

(f[x]

&c[0])

==c[0]

)p[x]=0

,c[0].

set(x)

,dfs

(x+1

),p[x]=-

1,c[0]

.set

(x,0);

if((f[x]

&c[1])

==z)

}int

main()

memset

(last,0,

sizeof

(last)

);len=ans=0;

memset

(p,-1,

sizeof

(p))

;memset

(mark,

false

,sizeof

(mark));

c[0]

.reset()

,c[1].

reset()

;for

(int i=

1;i<=n;i++

)f[i]

.reset()

;for

(int i=

1;i<=m;i++

)for

(int i=

1;i<=n;i++

)f[i]

.set

(i);

bool no=

false

;for

(int x=

1;x<=n;x++)}

if(flag)

p[x]=0

,c[0].

set(x)

,mark[x]

=true;}

}if(no)

for(

int x=

1;x<=n;x++)if

(p[x]==-

1&&(f[x]

&c[0])

!=c[0]

) c[1]

.set

(x),mark[x]

=true

;for

(int i=last[x]

;i;i=e[i]

.next)if(

(f[y]

&c[0])

!=c[0]

) p[y]=0

;mark[y]

=true;}

if(no)

break;}

if(no)

lt=0;

int c0=0;

bool all=

true

;for

(int x=

1;x<=n;x++)if

(cnt)all=

false

;++lt;}if

(all)

dfs(1)

;printf

("%d\n"

,ans);}

}

判斷能否被3,5,7整除

給你乙個整數,請判斷它能否被 3,5,7 整除,並輸出以下資訊 能同時被 3,5,7 整除 直接輸出3 5 7,每個數中間乙個空格 只能被其中兩個數整除 輸出兩個數,小的在前,大的在後。例如 3 5或者3 7或者5 7,中間用空格分隔 只能被其中乙個數整除 輸出這個除數 不能被任何數整除,輸出小寫字...

判斷能否被3,5,7整除

描述 給定乙個整數,判斷它能否被3,5,7整除,並輸出以下資訊 1 能同時被3,5,7整除 直接輸出3 5 7,每個數中間乙個空格 2 只能被其中兩個數整除 輸出兩個數,小的在前,大的在後。例如 3 5或者 3 7或者5 7,中間用空格分隔 3 只能被其中乙個數整除 輸出這個除數 4 不能被任何數整...

本地安裝zookeeper 3 5 7

本地安裝zookeeper 3.5.7 zookeeper 3.5.7 2 建立資料夾 改名 解壓後,建立data和log目錄。進入conf目錄,有乙個zoo sample.cfg檔案,將其重新命名為zoo.cfg,然後開啟,在最後新增 datadir e programfiles apache z...