QOJ.ac

QOJ

時間限制: 1 s 記憶體限制: 512 MB 總分: 100 可 Hack ✓

#385. Jogo

统计

狂野飙车 é o jogo favorito de 小L. Ao contrário dos outros jogadores amadores, 小L também estuda a conceção do jogo enquanto joga, pelo que tem estratégias de jogo diferentes das dos outros.

Descrição do problema

小L planeia disputar $n$ partidas. Cada partida utiliza um mapa, e 小L escolherá um carro para completar a partida nesse mapa.

小L tem três carros de corrida, representados pelas letras maiúsculas $A$, $B$ e $C$. Existem quatro tipos de mapas, representados pelas letras minúsculas $x$, $a$, $b$ e $c$. O carro $A$ não é adequado para o mapa $a$, o carro $B$ não é adequado para o mapa $b$, e o carro $C$ não é adequado para o mapa $c$. O mapa $x$ é adequado para todos os carros. Os mapas adequados para todos os carros são pouco frequentes: haverá, no máximo, $d$ desses mapas.

Os mapas das $n$ partidas podem ser descritos por uma cadeia de letras minúsculas. Por exemplo, $S=\texttt{xaabxcbc}$ significa que 小L planeia disputar 8 partidas: os mapas da primeira e da quinta partidas são do tipo $x$, adequado para todos os carros; os mapas da segunda e da terceira partidas são do tipo $a$, inadequado para o carro $A$; os mapas da quarta e da sétima partidas são do tipo $b$, inadequado para o carro $B$; e os mapas da sexta e da oitava partidas são do tipo $c$, inadequado para o carro $C$.

小L tem alguns requisitos especiais para o jogo, que podem ser descritos por quádruplos $(i,h_i,j,h_j)$: se utilizar o carro do modelo $h_i$ na partida $i$, terá de utilizar o carro do modelo $h_j$ na partida $j$.

Consegues ajudar 小L a escolher o carro a utilizar em cada partida? Se existirem várias soluções, apresenta qualquer uma delas. Se não existir solução, apresenta -1 (sem aspas).

Entrada

Lê os dados do ficheiro game.in.

A primeira linha da entrada contém dois inteiros não negativos $n,d$.

A segunda linha contém uma cadeia $S$.

Os significados de $n,d,S$ são os indicados na descrição do problema. A cadeia $S$ contém $n$ caracteres, dos quais exatamente $d$ são a letra minúscula $x$.

A terceira linha contém um inteiro positivo $m$, que indica o número de regras para a utilização dos carros. Cada uma das $m$ linhas seguintes contém um quádruplo $i,h_i,j,h_j$, em que $i,j$ são inteiros e $h_i,h_j$ são os caracteres $a$, $b$ ou $c$, com os significados indicados na descrição do problema.

Saída

Escreve a saída no ficheiro game.out.

Apresenta uma linha.

Se não existir solução, apresenta -1 (sem aspas).

Se existir solução, apresenta uma cadeia de comprimento $n$, composta apenas pelas letras maiúsculas $A$, $B$ e $C$, que descreva como 小L deve escolher os carros nas $n$ partidas. Se existirem várias soluções, basta apresentar qualquer uma delas.

Exemplos

Entrada 1

3 1
xcc
1
1 A 2 B

Saída 1

ABA

Exemplo 2

Consulta os ficheiros game/game2.in e game/game2.ans no diretório dos concorrentes.

Explicação do exemplo 1

小L planeia disputar 3 partidas. O mapa da primeira partida é do tipo $x$, adequado para todos os carros; os mapas da segunda e da terceira partidas são do tipo $c$, inadequado para o carro $C$.

小L deseja que, se utilizar o carro $A$ na primeira partida, utilize o carro $B$ na segunda.

Assim, atribuir os carros $A$, $B$ e $A$, respetivamente, às 3 partidas satisfaz todas as condições.

Atribuir às 3 partidas, por ordem, os carros BBB ou BAA também satisfaz todas as condições, pelo que estas respostas também são consideradas corretas. Porém, as atribuições AAB ou ABC não satisfazem todas as condições, pelo que não são consideradas corretas.

Subtarefas

Número do teste $n$ $d$ $m$ Outras propriedades
1 $\le 2$ $0$ $\le 4$ Nenhuma
2 $\le 2$ $\le n$ $\le 4$ Nenhuma
3 $\le 5$ $0$ $\le 10$ Nenhuma
4 $\le 5$ $\le n$ $\le 10$ Nenhuma
5 $\le 10$ $0$ $\le 20$ Nenhuma
6 $\le 10$ $\le 8$ $\le 20$ Nenhuma
7 $\le 20$ $0$ $\le 40$ $S$ contém apenas $c$
8 $\le 20$ $0$ $\le 40$ Nenhuma
9 $\le 20$ $\le 8$ $\le 40$ $S$ contém apenas $x$ ou $c$
10 $\le 20$ $\le 8$ $\le 40$ Nenhuma
11 $\le 100$ $0$ $\le 200$ $S$ contém apenas $c$
12 $\le 100$ $0$ $\le 200$ Nenhuma
13 $\le 100$ $\le 8$ $\le 200$ $S$ contém apenas $x$ ou $c$
14 $\le 100$ $\le 8$ $\le 200$ Nenhuma
15 $\le 5000$ $0$ $\le 10000$ Nenhuma
16 $\le 5000$ $\le 8$ $\le 10000$ $S$ contém apenas $x$ ou $c$
17 $\le 5000$ $\le 8$ $\le 10000$ Nenhuma
18 $\le 50000$ $0$ $\le 100000$ Nenhuma
19 $\le 50000$ $\le 8$ $\le 100000$ $S$ contém apenas $x$ ou $c$
20 $\le 50000$ $\le 8$ $\le 100000$ Nenhuma

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.