QOJ.ac

QOJ

时间限制: 3 s 内存限制: 384 MB 总分: 100 难度: [显示]

#1788. Квантовая связь

统计

小 Z самостоятельно изучает квантовые компьютеры. Недавно, читая раздел о квантовой связи, он встретил интересную задачу. Alice и Bob обмениваются квантовыми сообщениями. Их язык общения — словарь $S$ размера $n$, каждое слово $s_i$, где $1\le i\le n$, представляется двоичной строкой длины 256 бит. В этой задаче $s_i$ можно сгенерировать вызовом функции gen, код которой находится в файле gen.cpp в каталоге задачи. Параметры функции n, a1, a2 задаются во входных данных.

Alice и Bob собираются провести $m$ сеансов связи. В каждом сеансе Alice передаёт Bob ровно одно слово из словаря. Однако канал связи ненадёжен и подвержен шуму. Точнее, пусть в $i$-м сеансе исходное слово Alice равно $x_i$. Шум может инвертировать не более $k_i$ битов этой двоичной строки. Иными словами, строка $y_i$, полученная Bob, может отличаться от $x_i$ не более чем в $k_i$ позициях и может отсутствовать в словаре $S$.

При этом Bob узнал, что злодей Eve проник в их канал связи и намерен мешать общению. Он может заменить полученную Bob строку на произвольную двоичную строку длины 256 бит, которая также может отсутствовать в словаре $S$. Eve очень хитёр и необязательно вмешивается в каждый сеанс.

Bob обратился к вам за помощью. Для каждого следующего сеанса по окончательно полученной Bob строке и порогу шума $k_i$, где $0\le k_i\le 15$, определите, возможно ли, что Eve не вмешивался. Это означает, что полученную строку можно получить из некоторого слова словаря, инвертировав не более $k_i$ битов. Если такое возможно, выведите $1$, иначе $0$. Bob очень верит в ваши способности, поэтому отвечать нужно в режиме онлайн; подробности приведены в разделе входных данных.

Чтобы сократить время ввода, полученная Bob строка задаётся шестнадцатеричной строкой длины 64. Она содержит цифры 0–9 и прописные английские буквы A–F, обозначающие соответственно значения от $10$ до $15$.

Шестнадцатеричную строку можно преобразовать в двоичную посимвольно: например, 5 соответствует 0101, A — 1010, C — 1100.

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

Данные считываются из файла qi.in.

Первая строка содержит четыре неотрицательных целых числа $n,m,a_1,a_2$ — размер словаря, количество сеансов связи и начальные значения параметров a1 и a2 функции gen соответственно.

В своей программе нужно вызвать упомянутую в условии функцию gen, чтобы сгенерировать словарь. Можно скопировать и использовать код из gen.cpp. Булев массив s[N+1][256] в программе содержит все слова.

Следующие $m$ строк содержат по одной шестнадцатеричной строке длины 64 и неотрицательному целому числу $k_i$ — окончательную строку, полученную Bob в $i$-м сеансе, и порог шума соответственно.

Чтобы обеспечить ответы в режиме онлайн, после восстановления двоичной строки длины 256 бит из шестнадцатеричной нужно выполнить побитовое исключающее ИЛИ каждого бита с $lastans$. Только после этого получится настоящая строка, полученная Bob в этом сеансе. Здесь $lastans\in\{0,1\}$ — ответ на предыдущий запрос; перед первым запросом $lastans=0$.

Обратите внимание: при вводе и выводе переменных типа unsigned long long с помощью scanf и printf используется спецификатор llu.

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

Результат выводится в файл qi.out.

Выведите $m$ строк, в каждой — одно целое число $0$ или $1$, ответ на текущий запрос.

Пример запросов

Для удобства объяснения рассмотрим упрощённый случай: слова словаря заданы явно, их длина уменьшена до 4, и разрешены ответы на запросы в режиме офлайн.

Пусть размер словаря $n=2$, а его слова — 1010 и 0111.

Для запроса B = 1011 и $k_1=1$ ответ равен $1$: строка получается инвертированием четвёртого бита 1010. Здесь и далее биты считаются от старшего к младшему.

Для запроса 1 = 0001 и $k_2=2$ ответ равен $1$: строка получается инвертированием второго и третьего битов 0111.

Для запроса 1 = 0001 и $k_3=1$ ответ равен $0$.

  • Инвертировав не более 1 бита в 1010, можно получить 1010, 0010, 1110, 1000, 1011.
  • Инвертировав не более 1 бита в 0111, можно получить 0111, 1111, 0011, 0101, 0110.
  • Получить 1 = 0001 невозможно: эта строка обязательно является результатом вмешательства Eve.

Примеры

Пример 1

См. файлы qi/qi1.in и qi/qi1.ans в каталоге участника.

Пример 2

См. файлы qi/qi2.in и qi/qi2.ans в каталоге участника.

Пример 3

См. файлы qi/qi3.in и qi/qi3.ans в каталоге участника.

Ограничения

Для всех тестов $1\le n\le 4\times 10^5$, $1\le m\le 1.2\times 10^5$, $0\le k\le 15$. Значения $a_1$ и $a_2$ генерируются равномерно случайно в диапазоне $[0,2^{64}-1]$.

Номер теста $n=$ $m=$ $k_i\le$ Особые свойства
1 $10$ $10$ $2$ Нет
2 $500$ $500$ $15$ Нет
3 $1000$ $1000$ $0$ Нет
4 $2000$ $2000$ $2$ Нет
5 $5000$ $5000$ $15$ Нет
6 $10000$ $10000$ $15$ Нет
7 $20000$ $20000$ $15$ Нет
8 $100000$ $100000$ $1$ Нет
9 $400000$ $120000$ $1$ Нет
10 $50000$ $50000$ $2$ Нет
11 $70000$ $70000$ $3$ Нет
12 $100000$ $100000$ $2$ Нет
13 $30000$ $30000$ $5$ Нет
14 $60000$ $60000$ $4$ Нет
15 $120000$ $120000$ $5$ Нет
16 $60000$ $60000$ $8$ Все строки запросов генерируются случайно
17 $120000$ $120000$ $12$ Все строки запросов генерируются случайно
18 $400000$ $100000$ $15$ Все строки запросов генерируются случайно
19 $30000$ $30000$ $7$ Нет
20 $60000$ $60000$ $9$ Нет
21 $90000$ $90000$ $11$ Нет
22 $200000$ $120000$ $12$ Нет
23 $400000$ $80000$ $15$ Нет
24 $400000$ $100000$ $15$ Нет
25 $400000$ $120000$ $15$ Нет

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.