QOJ.ac

QOJ

时间限制: 1 s 内存限制: 512 MB 总分: 100 可 Hack ✓

#385. Игра

统计

狂野飙车 — любимая игра 小 L. В отличие от других любителей, 小 L не только играет, но и хорошо разбирается в устройстве игры, поэтому у него особая игровая стратегия.

Условие задачи

小 L планирует сыграть $n$ игр. В каждой игре используется одна карта, и 小 L выбирает автомобиль, на котором пройдёт эту карту.

У 小 L есть три гоночных автомобиля, обозначенные прописными буквами A, B, C. Существуют четыре вида карт, обозначенные строчными буквами x, a, b, c. Автомобиль A не подходит для карты a, автомобиль B не подходит для карты b, а автомобиль C не подходит для карты c. Карта x подходит для всех автомобилей. Карты, подходящие для всех автомобилей, встречаются редко: их будет не более $d$.

Карты для $n$ игр можно описать строкой из строчных букв. Например, $S=\texttt{xaabxcbc}$ означает, что 小 L планирует сыграть 8 игр. В первой и пятой играх карта имеет тип x и подходит для всех автомобилей; во второй и третьей — тип a, который не подходит для автомобиля A; в четвёртой и седьмой — тип b, который не подходит для автомобиля B; в шестой и восьмой — тип c, который не подходит для автомобиля C.

У 小 L есть особые требования к играм. Каждое из них описывается четвёркой $(i,h_i,j,h_j)$: если в $i$-й игре используется автомобиль модели $h_i$, то в $j$-й игре должен использоваться автомобиль модели $h_j$.

Помогите 小 L выбрать автомобиль для каждой игры. Если решений несколько, выведите любое. Если решения нет, выведите -1 без кавычек.

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

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

Первая строка содержит два неотрицательных целых числа $n,d$.

Вторая строка содержит строку $S$.

Значения $n,d,S$ описаны в условии задачи. Строка $S$ содержит $n$ символов, ровно $d$ из которых — строчная буква x.

Третья строка содержит положительное целое число $m$ — количество правил использования автомобилей. Каждая из следующих $m$ строк содержит четвёрку $i,h_i,j,h_j$, где $i,j$ — целые числа, а $h_i,h_j$ — символы a, b или c. Их смысл описан в условии задачи.

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

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

Выведите одну строку.

Если решения нет, выведите -1 без кавычек.

Если решение существует, выведите строку длины $n$, состоящую только из прописных букв A, B, C и описывающую выбор автомобилей 小 L в этих $n$ играх. Если решений несколько, можно вывести любое из них.

Примеры

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

3 1
xcc
1
1 A 2 B

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

ABA

Пример 2

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

Примечание

小 L планирует сыграть 3 игры. В первой игре карта имеет тип x и подходит для всех автомобилей, а во второй и третьей — тип c, который не подходит для автомобиля C.

小 L хочет, чтобы при использовании автомобиля A в первой игре во второй игре использовался автомобиль B.

Таким образом, выбор автомобилей A, B, A для этих трёх игр удовлетворяет всем условиям.

Выбор BBB или BAA для трёх последовательных игр также удовлетворяет всем условиям и считается правильным ответом. Однако выбор AAB или ABC не удовлетворяет всем условиям и не считается правильным ответом.

Подзадачи

Номер теста $n$ $d$ $m$ Другие свойства
1 $\le 2$ $0$ $\le 4$ Нет
2 $\le 2$ $\le n$ $\le 4$ Нет
3 $\le 5$ $0$ $\le 10$ Нет
4 $\le 5$ $\le n$ $\le 10$ Нет
5 $\le 10$ $0$ $\le 20$ Нет
6 $\le 10$ $\le 8$ $\le 20$ Нет
7 $\le 20$ $0$ $\le 40$ $S$ содержит только c
8 $\le 20$ $0$ $\le 40$ Нет
9 $\le 20$ $\le 8$ $\le 40$ $S$ содержит только x или c
10 $\le 20$ $\le 8$ $\le 40$ Нет
11 $\le 100$ $0$ $\le 200$ $S$ содержит только c
12 $\le 100$ $0$ $\le 200$ Нет
13 $\le 100$ $\le 8$ $\le 200$ $S$ содержит только x или c
14 $\le 100$ $\le 8$ $\le 200$ Нет
15 $\le 5000$ $0$ $\le 10000$ Нет
16 $\le 5000$ $\le 8$ $\le 10000$ $S$ содержит только x или c
17 $\le 5000$ $\le 8$ $\le 10000$ Нет
18 $\le 50000$ $0$ $\le 100000$ Нет
19 $\le 50000$ $\le 8$ $\le 100000$ $S$ содержит только x или c
20 $\le 50000$ $\le 8$ $\le 100000$ Нет

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.