zoukankan      html  css  js  c++  java
  • 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
    戒骄戒躁
  • 相关阅读:
    Python 虚拟环境(VirtualEnv)
    python 枚举
    Python 面向对象编程
    Python 使用模块
    Python 函数
    Python dict & set
    JAVA-工具类
    09-12 练习题
    JAVA-数组
    java-语句
  • 原文地址:https://www.cnblogs.com/lxzl/p/9753744.html
Copyright © 2011-2022 走看看