站长工具樱花,如何制作餐馆网站,最新军事报道,ftp使用修改wordpress权限题意#xff1a;给定n个物品#xff0c;每个物品用01串表示#xff0c;表示具备与否某个特征#xff0c;然后每次可以询问一个特征#xff0c;问最少询问几次能够确定一个物品。 思路#xff1a;状压Dp#xff0c;将这些数的特征压缩成一个数#xff0c;把询问过的和没…题意给定n个物品每个物品用01串表示表示具备与否某个特征然后每次可以询问一个特征问最少询问几次能够确定一个物品。 思路状压Dp将这些数的特征压缩成一个数把询问过的和没询问的都用一集合表示然后枚举没有询问的记忆化搜索。 code #include iostream
#include cstdio
#include cmath
#include algorithm
#include cstring
#include sstream
#include string
#include vector
#include list
#include queue
#include stack
#include map
#include set
#include bitsetusing namespace std;typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;const int INF9999999;
const int inf-INF;
const int N135;
const int M2048472;
const int mod1000000007;
const double piacos(-1.0);#define cls(x,c) memset(x,c,sizeof(x))
#define ft(i,s,n) for (int is;in;i)
#define lson l,m,rt1
#define rson m1,r,rt1|1
#define lrt rt1
#define rrt rt1|1
#define middle int m(rl)1
#define lowbit(x) (x-x)
#define pii pairint,int
#define mk make_pair
#define IN freopen(in.txt,r,stdin);
#define OUT freopen(out.txt,w,stdout);int n,m,d[M][M],cnt[M][M];
string v[N];int dp(int s,int a)
{int ansd[s][a];if (cnt[s][a]1) return ans0;if (ans0) return ans;ansm;ft(i,0,m-1)if (!(s(1i)))ansmin(ans,max(dp(s|(1i),a),dp(s|(1i),a|(1i)))1);return ans;
}
int main()
{while (~scanf(%d %d,m,n),mn){cls(d,-1);cls(cnt,0);ft(i,0,n-1) cinv[i];ft(i,0,n-1){int t0;ft(j,0,m-1) if (v[i][j]!0) t|(1j);ft(j,0,(1m)-1) cnt[j][tj];}printf(%d\n,dp(0,0));}
}