QOJ.ac

QOJ

Límite de tiempo: 6.0 s Límite de memoria: 512 MB Puntuación total: 100 Hackeable ✓

#17775. Сеть электроснабжения

Estadísticas

Электросеть состоит из $n$ узлов, соединенных между собой несколькими двунаправленными линиями электропередачи, образуя неориентированный граф.

При настройке сети все узлы распределяются по двум независимым основным модулям питания. Для узла $i$ ($1 \le i \le n$) определим количество его соседей в том же модуле $d_i$ как количество узлов, соединенных с узлом $i$ прямой линией и подключенных к тому же модулю питания, что и узел $i$.

Маленький S нашел записи о $q$ тестах, где каждый тест представлен строкой $s$ длины $n$. Для $i$-го узла ($1 \le i \le n$): Если $s_i = 0$, то требуется, чтобы в данной конфигурации количество соседей узла $i$ в том же модуле $d_i$ было четным; Если $s_i = 1$, то требуется, чтобы в данной конфигурации количество соседей узла $i$ в том же модуле $d_i$ было нечетным; * Если $s_i = ?$, то узел $i$ не участвует в записи, то есть к четности количества соседей узла $i$ в том же модуле требований нет.

Маленький T отметил, что множества узлов, участвующих в записях, обладают регулярной структурой вложенности. Конкретнее, пусть $S_i$ — множество узлов, участвующих в $i$-м тесте ($1 \le i \le q$) (то есть множество всех позиций в строке, отличных от $?$). Тогда для любых двух различных записей $i, j$ ($1 \le i < j \le q$) множества $S_i$ и $S_j$ обязательно удовлетворяют одному из трех условий: $S_i \subseteq S_j$, $S_j \subseteq S_i$ или $S_i \cap S_j = \emptyset$.

Чтобы как можно скорее настроить электросеть, вам нужно помочь маленькому T и маленькому S вычислить количество существенно различных способов подключения всех узлов к двум основным модулям для каждого теста. Два способа считаются различными тогда и только тогда, когда существует хотя бы один узел, который в этих двух способах подключен к разным основным модулям. Поскольку ответ может быть очень большим, выведите его по модулю $10^9 + 7$.

Входные данные

Первая строка содержит два целых числа $n, q$ ($1 \le n, q \le 3 \times 10^3$).

Далее следуют $n$ строк, каждая из которых содержит строку из $0$ и $1$ длиной $n$. В $i$-й строке ($1 \le i \le n$) $j$-й символ ($1 \le j \le n$) указывает, существует ли линия электропередачи между узлом $i$ и узлом $j$: $1$ — если существует, $0$ — в противном случае. Гарантируется отсутствие петель, то есть $i$-й символ в $i$-й строке всегда равен $0$.

Далее следуют $q$ строк, каждая из которых содержит строку $s$ длиной $n$, представляющую запись одного теста.

Выходные данные

Выведите $q$ строк, каждая из которых содержит неотрицательное целое число — количество существенно различных способов подключения всех узлов к двум основным модулям для соответствующего теста по модулю $10^9 + 7$.

Примеры

Входные данные 1

3 2
010
100
000
1?0
010

Выходные данные 1

4
0

Примечание

Для первого теста существует четыре способа подключения: 1. Все узлы подключены к первому основному модулю; 2. Все узлы подключены ко второму основному модулю; 3. Узлы 1 и 2 подключены к первому модулю, узел 3 — ко второму; 4. Узлы 1 и 2 подключены ко второму модулю, узел 3 — к первому.

Входные данные 2

6 5
000010
000001
000000
000001
100000
010100
?11?0?
??????
?10?1?
??0?0?
?01?01

Выходные данные 2

0
64
16
32
0

Примечание

Для второго теста (строка ??????) существует 64 способа подключения, так как нет никаких ограничений на четность соседей, и каждый из 6 узлов может быть подключен к одному из двух модулей ($2^6 = 64$). Для остальных тестов количество способов определяется наложенными ограничениями на четность.

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download
#1647EditorialOpen可能是另解dXqwq2026-04-30 15:29:14View

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.