6741870
Accepted
  60 1002
2016-08-04 14:25:22

题目大意如下:给定n个LED灯串,每个灯串由p个LED灯构成,并给出每个灯串当下的状态,需要让所有灯串中规定的某些灯灭掉,询问最少剩下几盏正常的灯可以让我们分辨出LED灯原先代表的数字。

思路如下:正难则反。既然不可能一个个判断灯串所代表的符号,那么就只需判断若灭掉一些灯之后,n个灯串中剩下的亮灯是否有两组相同,若有,则分辨不出。因为灭掉的灯的种类和数量不定。那么,问题就可以转化为,用子集生成算法枚举剩下的灯串或灭掉的灯串,再判断是否出现了非法灯串就行了。而这里我用的是增量法枚举剩下的亮灯。

代码如下:(2KB)

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
using namespace std;
int a[20],p,n,ans;
bool pdt[110][20];
bool same(int x,int y,int cur)
{
for(int i=0;i<cur;i++)
if(pdt[x][a[i]]^pdt[y][a[i]])
return 0;
return 1;
}
bool jud(int cur)
{
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
if(same(i,j,cur))return 0;
return 1;
}
void sub(int cur)
{
if(jud(cur))
ans=min(ans,cur);
int s=cur?a[cur-1]+1:0;
for(int i=s;i<p;i++){
a[cur]=i;
sub(cur+1);
}
}
void Init()
{
ans=0x3f3f3f3f;
scanf("%d%d",&p,&n);
for(int i=0;i<n;i++)
for(int j=0;j<p;j++)
scanf("%d",&pdt[i][j]);
}
int main()
{
int T;
scanf("%d",&T);
while(T--){
Init();
sub(0);
printf("%d\n",ans);
}
return 0;
}

uva11025 The broken pedometer的更多相关文章

  1. UVA 11205 The broken pedometer(子集枚举)

    B - The broken pedometer Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu ...

  2. UVa11205 The Broken Pedometer

    // 题意:有P个LED灯,以及N个字符,要求选出个数最少的LED灯,使得即使只有这些灯正常工作,也能区分出这N个字符 // 题意抽象:输入两个整数P, N以及N行P列的01矩阵,找少的列,能区分所有 ...

  3. UVa 11205 - The broken pedometer

    称号:给你p一个LED在同一个显示器组成n一个.显示每个显示器上的符号(LED的p长度01串) 问:用最少p几个比特位,您将能够这些区分n不同的符号.同样不能(其他位置上设置0处理) 分析:搜索.枚举 ...

  4. uva11205 The broken pedometer 子集生成

    PS:此题我在网上找了很久的题解,发现前面好多题解的都是没有指导意义的.后来终于找到了一篇好的题解. 好的题解的链接:http://blog.csdn.net/u013382399/article/d ...

  5. UVa 11025 The broken pedometer【枚举子集】

    题意:给出一个矩阵,这个矩阵由n个数的二进制表示,p表示用p位二进制来表示的一个数 问最少用多少列就能将这n个数区分开 枚举子集,然后统计每一种子集用了多少列,维护一个最小值 b[i]==1代表的是选 ...

  6. 备战NOIP每周写题记录(一)···不间断更新

    ※Recorded By ksq2013 //其实这段时间写的题远远大于这篇博文中的内容,只不过那些数以百记的基础题目实在没必要写在blog上; ※week one 2016.7.18 Monday ...

  7. The broken pedometer-纯暴力枚举

    The broken pedometer Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu i ...

  8. UVA题目分类

    题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics ...

  9. TNS-12518 & Linux Error:32:Broken pipe

    最近一周,有一台ORACLE数据库服务器的监听服务在凌晨2点过几分的时间点突然崩溃,以前从没有出现过此类情况,但是最近一周出现了两次这种情况,检查时发现了如下一些信息: $ lsnrctl servi ...

随机推荐

  1. 定时从多个Excel导入数据到SQL数据库

    Scheduling Data Imports in SQL Server Importing data into a SQL Server database isn't really that tr ...

  2. Android 项目框架

  3. 【C语言】C语言运算符

    目录: [算术运算符] [自增运算符] [自减运算符] [关系运算符] [逻辑运算符] [三目运算符] [sizeof运算符] · 作用 1.算术运算符 +(加).-(减).*(乘)./(除).%(取 ...

  4. 你真的了解UIViewController跳转吗?

    一:UIViewController模态跳转 //展示模态视图 - (void)presentViewController:(UIViewController *)viewControllerToPr ...

  5. OC 内存泄露 自动释放池

    花絮:看到下面的代码就想起这么一个调侃: 一个老程序员,功成名就,金盆洗手不在写代码后,决定练练书法.提笔思索良久后在纸上写下:Hello world! /********************** ...

  6. IOS contentOffset该如何理解

    contentOffset是哪个点??? 首先从字面理解:内容偏移 我可是查了词典的!!! 对于contentOffset有的时候我们会产生错误理解. 我不想在这里介绍错误的理解避免不必要的混淆. 我 ...

  7. maven编译java代码报“非法字符: \65279 ”错误的解决方法

    前段时间开发一个项目,使用maven进行编译时报“非法字符: \65279 ”,但是眼睛看怎么都正确的,文件转成utf-8编码还是报错. 最后没办法,暴力解决了这个问,步骤如下 1.把文件内容复制出来 ...

  8. 【转】探索C#之布隆过滤器(Bloom filter)

    原文:蘑菇先生,http://www.cnblogs.com/mushroom/p/4556801.html 背景介绍 Bloom filter(后面简称BF)是Bloom在1970年提出的二进制向量 ...

  9. Linux Swap交换分区介绍总结

    Swap交换分区概念   什么是Linux swap space呢?我们先来看看下面两段关于Linux swap space的英文介绍资料: Linux divides its physical RA ...

  10. JavaScript(七)——视频插入

    代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...