bzoj#P2913. [Poi1997]XOR Gates

[Poi1997]XOR Gates

题目描述

一个异或门有两组输入并产生一组输出:

如果一个有 nn 个输入 11 个输出的由异或门构成的系统满足下列条件,那么称它为异或网络:

  1. 网络的每个输入端和至少一个异或门的输入端相连接;
  2. 每个异或门的输入端和网络的输入端或者某个异或门的输出端相连;
  3. 只有一个异或门的输出端和网络的输出端相连;
  4. 每个异或门的输出端要么和至少一个异或门的输入端相连,要么和网络的输出端相连;
  5. 存在一个对异或门的编号方式,使得对每个异或门的每个输入端都连接到网络的输入端或者一个编号更小的异或门的输出端。

一个网络的输入端从 11nn 编号。每个引脚的高低电位由一个长度为 nn01 字符串给定。我们假设第 ii 个字符代表着第 ii 个输入引脚的电位。对于每一组输入电位,网络产生一个输出电位,用 01 表示。注意到每组输入的字符串都是一个代表自然数的二进制串,所以我们可以把输入的字符串按照它们代表的自然数的大小排序。我们会发送固定范围内的自然数到输入端,然后记下有多少次返回了 11

你的任务

写一个程序:

  • 读入关于异或网络的描述:输入引脚数量 nn,异或门数量 mm,连接到网络的输出引脚的异或门编号,以及异或门的连接方式;
  • 读入两个长度为 nn 的二进制串,代表上下区间;
  • 计算区间内有多少组输入会使网络返回 11
  • 输出答案。

输入格式

第一行,33 个整数:输入引脚数量 nn ,异或门数量 mm,连接到网络的输出引脚的异或门编号。

接下来 mm 行代表异或门的连接方式,在这里的第 ii 行代表第 ii 个异或门的两个输入端,输入在 [n,m][-n,m] 的两个数:如果是 k-k 那么连接到第 kk 个异或门的输入脚,否则连接到输出脚。最后有两行 nn 位的字符串,代表着上下区间。假设给定的字符串长度不超过 10510^5

输出格式

一个数:对于给定区间内的输入,有多少个会得到 11

5 6 5
-1 -2
1 3
1 -2
2 -3
4 6
-4 -5
00111
01110
5

数据规模与约定

对于 100%100\% 的数据,3n1003\le n\le 1003m3×1033\le m\le 3\times 10^3,输入门从 11mm 任意编号。