2102: [Usaco2010 Dec]The Trough Game

Time Limit: 10 Sec  Memory Limit: 64 MB
Submit: 117  Solved: 84
[Submit][Status]

Description

Farmer John and Bessie are playing games again. This one has to do with troughs of water. Farmer John has hidden N (1 <= N <= 20) troughs behind the barn, and has filled some of them with food. Bessie has asked M (1 <= M <= 100) questions of the form, "How many troughs from this list (which she recites) are filled?". Bessie needs your help to deduce which troughs are actually filled. Consider an example with four troughs where Bessie has asked these questions (and received the indicated answers): 1) "How many of these troughs are filled: trough 1" --> 1 trough is filled 2) "How many of these troughs are filled: troughs 2 and 3" --> 1 trough is filled 3) "How many of these troughs are filled: troughs 1 and 4" --> 1 trough is filled 4) "How many of these troughs are filled: troughs 3 and 4" --> 1 trough is filled From question 1, we know trough 1 is filled. From question 3, we then know trough 4 is empty. From question 4, we then know that trough 3 is filled. From question 2, we then know that trough 2 is empty. 求N位二进制数X,使得给定的M个数,满足X and Bi=Ci ,Bi ci分别是读入的两个数

Input

* Line 1: Two space-separated integers: N and M * Lines 2..M+1: A subset of troughs, specified as a sequence of contiguous N 0's and 1's, followed by a single integer that is the number of troughs in the specified subset that are filled.

Output

* Line 1: A single line with: * The string "IMPOSSIBLE" if there is no possible set of filled troughs compatible with Farmer John's answers. * The string "NOT UNIQUE" if Bessie cannot determine from the given data exactly what troughs are filled. * Otherwise, a sequence of contiguous N 0's and 1's specifying which troughs are filled.

Sample Input

4 4
1000 1
0110 1
1001 1
0011 1

Sample Output

1010

HINT

 

Source

Silver

题解:一上来居然没有别的想法——只有暴力。。。然后写了个纯粹的二进制穷举,然后,然后,然后,居然AC了?!?!44ms也是醉大了= =

aaarticlea/png;base64,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" alt="" />

 type
point=^node;
node=record
g:longint;
next:point;
end;
var
i,j,k,l,m,n,t:longint;
a:array[..] of point;
b,c,d:array[..] of longint;
c1,c2:char;
procedure add(x,y:longint);inline;
var p:point;
begin
new(p);p^.g:=y;
p^.next:=a[x];a[x]:=p;
end;
procedure dfs(x:longint);inline;
var i,j,k,l:longint;p:point;
begin
if x>n then
begin
for i:= to m do if b[i]> then exit;
if t= then
begin
for i:= to n do d[i]:=c[i];
t:=;
end
else
begin
writeln('NOT UNIQUE');
halt;
end;
end
else
begin
p:=a[x];l:=;
while p<>nil do
begin
if b[p^.g]= then
begin
l:=;
break;
end;
p:=p^.next;
end;
if l= then
begin
p:=a[x];
while p<>nil do
begin
dec(b[p^.g]);
p:=p^.next;
end;
c[x]:=;
dfs(x+);
p:=a[x];
while p<>nil do
begin
inc(b[p^.g]);
p:=p^.next;
end;
end;
c[x]:=;
dfs(x+);
end;
end; begin
readln(n,m);
for i:= to m do a[i]:=nil;
for i:= to m do
begin
for j:= to n do
begin
read(c1);
if c1='' then add(j,i);
end;
readln(b[i]);
end;
t:=;
dfs();
IF t= then write('IMPOSSIBLE') else for i:= to n do write(d[i]);
writeln;
readln;
end.

2102: [Usaco2010 Dec]The Trough Game的更多相关文章

  1. 【BZOJ】2102: [Usaco2010 Dec]The Trough Game(暴力)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2102 直接枚举所有情况......然后判断是否可行.. #include <cstdio> ...

  2. BZOJ2102 : [Usaco2010 Dec]The Trough Game

    暴力枚举答案然后检验. #include<cstdio> int n,m,i,j,k,a[100],b[100],cnt,ans;char s[20]; int main(){ for(s ...

  3. BZOJ2097[Usaco2010 Dec] 奶牛健美操

    我猜我这样继续做水题会狗带 和模拟赛的题很像,贪心搞一下. #include<bits/stdc++.h> using namespace std; int read(){ ,f=;cha ...

  4. BZOJ2101: [Usaco2010 Dec]Treasure Chest 藏宝箱

    2101: [Usaco2010 Dec]Treasure Chest 藏宝箱 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 327  Solved:  ...

  5. BZOJ 2100: [Usaco2010 Dec]Apple Delivery( 最短路 )

    跑两遍最短路就好了.. 话说这翻译2333 ---------------------------------------------------------------------- #includ ...

  6. BZOJ 2101: [Usaco2010 Dec]Treasure Chest 藏宝箱( dp )

    dp( l , r ) = sum( l , r ) - min( dp( l + 1 , r ) , dp( l , r - 1 ) ) 被卡空间....我们可以发现 l > r 是无意义的 ...

  7. BZOJ_2097_[Usaco2010 Dec]Exercise 奶牛健美操_二分答案+树形DP

    BZOJ_2097_[Usaco2010 Dec]Exercise 奶牛健美操_二分答案+树形DP Description Farmer John为了保持奶牛们的健康,让可怜的奶牛们不停在牧场之间 的 ...

  8. bzoj2101【Usaco2010 Dec】Treasure Chest 藏宝箱

    2101: [Usaco2010 Dec]Treasure Chest 藏宝箱 Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 418  Solved: ...

  9. BZOJ_2099_[Usaco2010 Dec]Letter 恐吓信_后缀自动机+贪心

    BZOJ_2099_[Usaco2010 Dec]Letter 恐吓信_后缀自动机 Description FJ刚刚和邻居发生了一场可怕的争吵,他咽不下这口气,决定佚名发给他的邻居 一封脏话连篇的信. ...

随机推荐

  1. java UUID的创建

    java UUID的创建: 参考:http://blog.csdn.net/yaerfeng/article/details/7070369 可以研究一下最后的一段代码: http://spiritf ...

  2. PHP + Memcache 实现Session共享

    一.安装Memcache和PHP扩展 Windows下的Memcache安装:1. 下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached2. 在终端(也即cmd ...

  3. 递归编译的Makefile的实现

    最近写了一个递归Makefile,目的是既可以实现子模块的单独编译,也可以不做任何修改就和整个程序的整体进行无缝衔接的编译.具体的思路是借助第三方文件,将子模块编译好的.o文件的路径自动写到confi ...

  4. 这个发现是否会是RSA算法的BUG、或者可能存在的破解方式?

    笔者从事各种数据加解密算法相关的工作若干年,今天要说的是基于大数分解难题的RSA算法,可能有些啰嗦. 事情的起因是这样的,我最近针对一款芯片进行RSA CRT解密的性能优化.因为期望值是1024bit ...

  5. 我的Linux系统的VIMRC

    " llvm CODING GUIDELines conformance for VIM" $Revision$"" Maintainer: The LLVM ...

  6. 作为测试人员,我是这么报BUG的

    在测试人员提需求的时候,大家经常会看到,测试员和开发一言不合就上BUG.然后开发一下就炸了,屡试不爽,招招致命. 曾经看到有个段子这么写道: 不要对程序员说,你的代码有BUG. 他的第一反应是:1.你 ...

  7. nRF51800 蓝牙学习 进程记录 2:关于二维数组 执念执战

    前天在玩OLED时想完成一直想弄得一个东西,就是简单的单片机游戏.因为STM32和nRF51822的内存足够,所以就用缓存数组的方法来显示图像(我也不知道术语是啥,反正就是在内存中建立一个128X64 ...

  8. <C++Primer>第四版 阅读笔记 第三部分 “类和数据抽象”

    类定义了数据成员和函数成员:数据成员用于存储与该类类型的对象相关联的状态:而函数成员则负责执行赋予数据意义的操作. 第12章 类 一个类可以包含若干公有的.私有的和受保护的部分:在public部分定义 ...

  9. 性能优化之数据存储&DOM编程

    多读书多看报 数据存储 ·在javascript中,数据存储的位置会对代码整体性能产生重大的影响. ·数据存储共有4种方式:字面量.变量.数组.对象成员.   ·要理解变量的访问速度,就要理解作用域. ...

  10. CentOS系统通过PXE实现批量无人值守安装

    通过传统的方式安装和部署计算机时,都需要人工干预的方式完成安装.如果需要部署大量的类似功能的工作站或服务器,则需要耗费大量的时间.同时传统的安装方式,每台计算机都需要光驱设备及安装光盘等介质,会额外增 ...