题目名称 2879. [POJ 1830]开关问题
输入输出 switch.in/out
难度等级 ★★★
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 1
题目来源 GravatarLGLJ 于2019-09-10加入
开放分组 全部用户
提交状态
分类标签
解异或方程组 高斯消元法
分享题解
通过:11, 提交:34, 通过率:32.35%
GravatarLGLJ 100 0.000 s 0.00 MiB C++
GravatarLGLJ 100 0.000 s 0.00 MiB C++
Gravatarop_组撒头屯 100 0.000 s 0.00 MiB C++
GravatarLfc_HeSn 100 0.000 s 0.00 MiB C++
Gravatar牛先生 100 0.000 s 0.00 MiB C++
Gravataryrtiop 100 0.000 s 0.00 MiB C++
Gravatar超人 100 0.000 s 0.00 MiB C++
Gravatar嗨嗨嗨 100 0.000 s 0.00 MiB C++
Gravatarsyzhaoss 100 0.000 s 2.42 MiB C++
Gravatarsyzhaoss 100 0.001 s 2.43 MiB C++
本题关联比赛
SBOI摆烂比赛①
关于 开关问题 的近10条评论(全部评论)

2879. [POJ 1830]开关问题

★★★   输入文件:switch.in   输出文件:switch.out   简单对比
时间限制:1 s   内存限制:128 MiB

【题目描述】

有 $N$ 个相同的开关,每个开关都与某些开关有着联系,每当你打开或者关闭某个开关的时候,其他的与此开关相关联的开关也会相应地发生变化,即这些相联系的开关的状态如果原来为开就变为关,如果为关就变为开。你的目标是经过若干次开关操作后使得最后N个开关达到一个特定的状态。对于任意一个开关,最多只能进行一次开关操作。你的任务是,计算有多少种可以达到指定状态的方法。(不计开关操作的顺序)

【输入格式1】

输入第一行有一个数 $K$,表示以下有 $K$ 组测试数据。

每组测试数据的格式如下:

第一行 一个数 $N(0 < N < 29)$

第二行 $N$ 个 $0$ 或者 $1$ 的数,表示开始时 $N$ 个开关状态。

第三行 $N$ 个 $0$ 或者 $1$ 的数,表示操作结束后 $N$ 个开关的状态。

接下来 每行两个数 $I\ J$,表示如果操作第 $I$ 个开关,第 $J$ 个开关的状态也会变化。每组数据以 $0\ 0$ 结束。

【输出格式1】

如果有可行方法,输出总数,否则输出“Oh,it's impossible~!!” 不包括引号

【样例输入】

2
3
0 0 0
1 1 1
1 2
1 3
2 1
2 3
3 1
3 2
0 0
3
0 0 0
1 0 1
1 2
2 1
0 0

【样例输出】

4
Oh,it's impossible~!!

【提示】

第一组数据的说明:

一共以下四种方法:

操作开关 1

操作开关 2

操作开关 3

操作开关 1、2、3 (不记顺序)

【来源】

为保护版权,此处仅包含 POJ 原题测试数据中的一部分。

通过这些数据,不代表程序能够通过 POJ 上的测试。

这些数据仅供个人学习、调试,禁止用于任何商业用途。