题目背景

由于今天是星期一,闹钟准时响了,由于小奔太困了,所以她想关停闹钟。

题目描述

可是,他的闹钟电路太复杂了,有很多个开关,每个开关都连着其他开关,其他开关又连着更多的开关,当且仅当所有开关都关闭时,闹钟才会停止响铃,(初始时默认每个开关都开着的),她该如何是好呢?

请你帮小奔求出最少开关次数,如果无论如何都不能关闭闹钟,请输出‘Change an alarm clock,please!’

输入输出格式

输入格式:

共有N+1行

第一行一个数N(1≤N≤20),表示有N个开关,从第2行起的第i行表示第i个闹钟开关。

以后N行,每行第一个数为M(0≤M≤N-1),表示第i个闹钟开关的直接关联开关个数。(由直接关联开关所关联的直接关联开关,自然就是第i个闹钟间接关联开关啦,当打开第i个开关时,只有直接关联,间接关联以及第i个开关才会起作用。),之后M个数,表示第i个闹钟直接关联开关的标号。(如果M为0则表示没有任何关联)

输出格式:

一个数ans,表示最少按开关次数,如果无法关闭,输出‘Change an alarm clock,please!’

输入输出样例

输入样例#1: 复制

5

4 2 3 4 5

2 1 3

2 1 4

2 1 5

1 1

输出样例#1: 复制

2

说明

样例1说明:

先关闭5,直接关联会关闭1。1间接关闭2、3、4,但会重新打开5。

此时共关闭开关一次,已关闭1,2,3,4

再打开2,直接关联会打开1和3。1间接关闭2、3、5,重新打开4。3间接关闭1、4。

此时共关闭开关2次,已关闭1,2,3,4,5,彻底关闭闹钟。


sb题+卡读入==黑体????


二进制状压,预处理按每一种开关后的情况bfs搜索情况0即可


#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#define LL long long
#define max(a,b) ((a)>(b)? (a):(b))
#define min(a,b) ((a)<(b)? (a):(b)) using namespace std; int b[5000000],i,m,n,j,k,a[25],d[25],bl[21][21],x;
queue <int>q; void bfs()
{
b[(1<<n)-1]=1;
q.push((1<<n)-1);
while(q.size())
{
int t=q.front(); q.pop();
for(int i=1;i<=n;i++)
{
if(!b[t^d[i]])
{
b[t^d[i]]=b[t]+1;
q.push(t^d[i]);
}
}
if(b[0]) return;
}
} int main()
{
scanf("%d",&n);
for(i=1;i<=n;i++)
{
memset(b,0,sizeof(b));
b[i]=1;
scanf("%d",&m);
for(j=1;j<=m;++j)
{
scanf("%d",&x);
bl[i][x]=1;
}
}
for(i=1;i<=n;++i)
{
d[i]^=(1<<(i-1));
for(j=1;j<=n;++j) if(bl[i][j] && i != j)
{
d[i]^=(1<<(j-1));
for(k = 1; k <= n; ++k) if(bl[j][k] && k != j)
d[i]^=(1<<(k-1));
}
}
bfs();
if(b[0]==0) printf("Change an alarm clock,please!");
else printf("%d",b[0]-1);
}

P4906 小奔关闹钟的更多相关文章

  1. Dfs【p4906】小奔关闹钟

    Background 由于今天是星期一,闹钟准时响了,由于小奔太困了,所以她想关停闹钟. Description 可是,他的闹钟电路太复杂了,有很多个开关,每个开关都连着其他开关,其他开关又连着更多的 ...

  2. 比赛:小奔的方案 solution

    题目 题目背景 有一个著名的题目: 五个海盗抢到了100个金币,每一颗都一样的大小和价值连城. 他们决定这么分: 1.抽签决定自己的号码 ------ [1.2.3.4.5] 2.首先,由1号提出分配 ...

  3. 比赛:小奔与不等四边形solution

    题目: 题目背景 有这样一道经典的数学题:已知一个四边形的边长是四个连续的正整数,求证这个四边形的面积的最大值不为整数.小奔轻松地证明了这个问题,现在问题来了,大奔要求小奔以最快的速度算出给定边长的四 ...

  4. 【CYH-01】小奔的国庆练习赛:赛后标程

    前排鸣谢@找寻 大佬 emm-由于头一次举办公开赛所以--准备不是很充分,所以说题解也没有备好,在这里表示歉意. 欢迎大家来发布题解,在此我们可以提供AC代码,供大家参考. T1 解析:这一题可能栈溢 ...

  5. 洛谷P4907【CYH-01】小奔的国庆练习赛 :$A$换$B$ $problem$(DFS,剪枝)

    洛谷题目传送门 顺便提一下题意有一个地方不太清楚,就是如果输出No还要输出最少需要添加多少张牌才能满足要求.蒟蒻考完以后发现四个点Too short on line 2... 比较需要技巧的搜索 既然 ...

  6. 比赛:小奔的矩形solution

    分析: 交叉相乘,然后除以最大公因数(为了减少爆常数的可能性std做了两次,数据很大),得到的两个数相加减二就是答案 代码: var p,q,n,m,a,b,i:int64; begin readln ...

  7. 原创跑酷小游戏《Cube Duck Run》 - - 方块鸭快跑

    自从unity5出来才开始关注unity,业余时间尝试做了个小游戏: <方块鸭快跑> (Cube Duck Run) 像素风,3d视角,色彩明快,有无尽和关卡两种模式. 应用连接: goo ...

  8. D - 小Y上学记——要迟到了!

    D - 小Y上学记——要迟到了! Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) ...

  9. 关于微软小娜Cortana(安卓版)

    关于微软小娜,大家都知道是微软发布的全球第一款个人智能助理.它“能够了解用户的喜好和习惯”,“帮助用户进行日程安排.问题回答等”.今天我就向大家介绍一下安卓版的小娜. 首先,和电脑版的小娜一样,安卓版 ...

随机推荐

  1. java 对CSV 文件的读取与生成

    CSV文件是以逗号分隔值的文件格式,一般用WORDPAD或记事本(NOTE),EXCEL打开.CSV(逗号分隔值)是一种用来存储数据的纯文本文件,通常都是用于存放电子表格或数据的一种文件格式,对于CS ...

  2. ajax获取富文本数据无法正常渲染到页面问题

    有时候富文本渲染到页面的时候 会连带标签一起渲染出来. 解决办法: 首先引用    <script src="https://cdn.jsdelivr.net/npm/fuwenben ...

  3. 【代码笔记】iOS-自动成表格的效果

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> #import "LabelOnBackImag ...

  4. 1000! mod 10^250

    1000! mod 10^250  =============== the answer is 2 ================ Hi I'm trying to solve the above ...

  5. 漂亮的ActionBar效果

    Newsstand—这个应用引进了新的方式,使得ActionBar达到了新的水平.如果你打开这个应用的发布页,你会注意到不带图标的ActionBar是半透明的,而且和一个大的图片集(一个大的杂志图标, ...

  6. UltraPtr下拉刷新

    github:  https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh <in.srain.cube.views.ptr.PtrF ...

  7. Android通过Intent传递对象

    1.传递Serializable方式类对象 首先创建一个序列化类:User import java.io.Serializable; public class User implements Seri ...

  8. leetCode题解之Array Partition I

    1.题目描述 2.分析 按照题目要求,主要就是对数组进行排序 3.代码 int arrayPairSum(vector<int>& nums) { ; sort( nums.beg ...

  9. Paxos可容错的一致性协议

    一致性问题要求多个process对一个值达成一致.基于消息传递的分布式系统中,在不考虑消息篡改等拜占庭错误的情况下,Paxos可以解决在进程退出,消息延迟,丢失,重复等异常发生的环境中对某个值达成一致 ...

  10. ExpressRoute 线路预配工作流和线路状态

    本页从较高层面引导你完成服务预配和路由配置工作流. 下图和相应的步骤说明了预配端到端 ExpressRoute 线路所要执行的任务. 使用 PowerShell 配置 ExpressRoute 线路. ...