题意:给定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 <bitset>using namespace std;typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;const int INF=9999999;
const int inf=-INF;
const int N=135;
const int M=2048+472;
const int mod=1000000007;
const double pi=acos(-1.0);#define cls(x,c) memset(x,c,sizeof(x))
#define ft(i,s,n) for (int i=s;i<=n;i++)
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define lrt  rt<<1
#define rrt  rt<<1|1
#define middle int m=(r+l)>>1
#define lowbit(x) (x&-x)
#define pii pair<int,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& ans=d[s][a];if (cnt[s][a]<=1) return ans=0;if (ans>=0) return ans;ans=m;ft(i,0,m-1)if (!(s&(1<<i)))ans=min(ans,max(dp(s|(1<<i),a),dp(s|(1<<i),a|(1<<i)))+1);return ans;
}
int main()
{while (~scanf("%d %d",&m,&n),m+n){cls(d,-1);cls(cnt,0);ft(i,0,n-1) cin>>v[i];ft(i,0,n-1){int t=0;ft(j,0,m-1) if (v[i][j]!='0') t|=(1<<j);ft(j,0,(1<<m)-1) cnt[j][t&j]++;}printf("%d\n",dp(0,0));}
}

uva 1252——Twenty Questions相关推荐

  1. UVa 1252 - Twenty Questions(记忆化搜索,状态压缩dp)

    本文出自   http://blog.csdn.net/shuangde800 题目链接:点击打开链接 题目大意 有n个长度为m的二进制串,每个都是不同的. 为了把所有字符串区分开,你可以询问,每次可 ...

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

    有n个物品,每个物品有m个特征.随机选择一个物品让你去猜,你每次可以询问一个特征的答案,问在采取最优策略时,最坏情况下需要猜的次数是多少. 设siz[S]为满足特征性质集合S的特征的物品总数,dp[S ...

  3. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

  4. 《算法竞赛入门经典——训练指南》第一章相关内容

    #<算法竞赛入门经典--训练指南>第一章相关内容 希望各位大牛能指导! 红色为已经做了的...黄色背景是还有不懂地方,希望在年前能刷完第一章啊.... 更新版.google上貌似又加了ex ...

  5. HOJ题目分类//放这儿没事刷刷学算法!嘻嘻!

    各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1 ...

  6. 机器学习资料推荐 URL

    1  http://blog.csdn.net/poiiy333/article/details/10282751 机器学习的资料较多,初学者可能会不知道怎样去有效的学习,所以对这方面的资料进行了一个 ...

  7. 机器学习和深度学习学习资料

    FROM:http://suanfazu.com/t/ji-qi-xue-xi-he-shen-du-xue-xi-xue-xi-zi-liao/126 比较全面的收集了机器学习的介绍文章,从感知机. ...

  8. 机器学习(Machine Learning)深入学习(Deep Learning)资料

    FROM:http://news.cnblogs.com/n/504467/ <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章, ...

  9. [转]机器学习和深度学习资料汇总【01】

    本文转自:http://blog.csdn.net/sinat_34707539/article/details/52105681 <Brief History of Machine Learn ...

最新文章

  1. 在GridView内访问特定控件
  2. sqlalchemy Specified key was too long; max key length is 767 bytes的解决办法
  3. CloudBees发布“Jenkins X”:面向部署到Kubernetes中的现代云应用的CI/CD解决方案
  4. 【译】What is a UTXO, and how does it work for a blockchain ledger?
  5. php中访问控制_一个实例:基于RBAC理论的访问控制实践
  6. word中中文保持正体,英文用斜体的方法.
  7. Android开发的环境搭建及HelloWorld的实现
  8. 判断给定数组是否包含132模式 132 Pattern
  9. JS魔法堂:那些困扰你的DOM集合类型
  10. .net知识和学习方法系列(前言)
  11. SharePoint 2007 在Windows Server 2008上列表Open with Windows Explorer失效 解决
  12. 微信退款读取resource下的证书(apiclient_cert.p12)获取不到问题
  13. linux命令mysql启动,linux下启动mysql的命令
  14. 程序语言的自我意识与仿他意识
  15. 饮料自动售货机C++
  16. 在Ubuntu中以管理员身份用可视化的方式打开根目录文件夹
  17. Unity 截取3D图像 与 画中画PIP的实现
  18. C# mschart 控件 框选 删除部分数据 及游标CursorX CursorY 使用
  19. 自动化测试的理解总结与感悟
  20. 来了!被誉为“世界新七大奇迹”的大兴机场正式投运!它有多牛?你想知道的都在这里!...

热门文章

  1. web前端入门学习(纯干货)
  2. Oracle连接字符串记录
  3. python学习日记(匿名函数)
  4. STS插件_ springsource-tool-suite插件各个历史版本
  5. Primefaces dataTable设置某个cell的样式问题
  6. h5启动原生APP总结
  7. Django 和 html
  8. JavaScript事件处理的三种方式(转)
  9. IOS开发之Swift学习笔记
  10. Android,监控ContentProvider的数据改变