hdu_4539_郑厂长系列故事——排兵布阵(状压DP|最大团)

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4539

题意:中文,不解释

题解:将每一行的状态压缩,然后进行DP,也可以用最大团做。这里我用的DP

#include
#include
#define max(a,b) ((a)>(b)?(a):(b))

int row[110];
int dp[110][220][220];//dp[i][j][k]表示第i行状态为j,i-1行状态为k时的士兵最大值
int s[1<<11];//合法状态
int cnt[1<<11];//合法状态中1的个数,即可安排的士兵数

int getcnt(int x){int c=0;while(x>0)c++,x=x&(x-1);return c;}

int fuck(int n,int m){
	int now=0,i,j,k,l,ans=0;
	for(i=0;i<(1<>1))||(s[j]&(s[k]<<1)))continue;
				for(l=0;l


你可能感兴趣的:(hdu,dp)