由於計算機系的同學們都很宅,很多同學雖然身在乙個系,但是入學很久還是相互不認識。學生會主席小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...