uva1252

Posted lxzl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uva1252相关的知识,希望对你有一定的参考价值。

dp[s][a]已询问{s}有{a}特征,还需要查询几次才能明确是哪一样物品。

答案为dp[0][0].

技术分享图片
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,m;
short dp[2050][2050];
ll a[200],s0;
int main(){
    freopen("p.in","r",stdin);
    ios::sync_with_stdio(false);
    cin>>m>>n;
    while(n+m!=0){
        memset(dp,0,sizeof(dp));
    for(int i=1;i<=n;i++){
    ll sum=0,x;
    char c;
    for(int j=1;j<=m;j++){
    cin>>c;
    if(c==0)x=0;else x=1;
    sum=sum*2+x;
    }
    a[i]=sum;
    }
    for(int s=(1<<m)-1;s>=0;s--){
     s0=s;
     while(1){
     bool az=1;
     ll cnt=0;
     for(int j=1;j<=n;j++){
         ll tmp=a[j]&s;
         if(tmp==s0)cnt++;
         if(cnt>1){az=0;break;}
         }
    if(az)dp[s][s0]=0;else{
    ll miner=1000;
    for(int i=1;i<=m;i++){
        ll u=1<<(i-1);
        if((u&s)==0){
        ll q;
        q=max(dp[s|u][s0|u],dp[s|u][s0]);
        miner=min(q,miner);
        }
        }
        dp[s][s0]=miner+1;}
        if(!s0)break;
        s0=(s0-1)&s;
    }
}
    cout<<dp[0][0]<<endl;    
    cin>>m>>n;
    }
    return 0;
}
View Code

 

以上是关于uva1252的主要内容,如果未能解决你的问题,请参考以下文章

Uva1252 Twenty Questions

(状压dp)UVA - 1252 Twenty Questions

UVA - 1252 Twenty Questions (状压dp+vis数组加速)

没有可用于编码 1252 的数据 - Xamarin

HDU - 1427 / UESTC - 1252 经典dfs

UVa 1442 - Cave