QOJ.ac

QOJ

Limite de temps : 1.0 s Limite de mémoire : 512 MB Points totaux : 100

#18081. Пасьянс «Цепи»

Statistiques

В этой задаче представлена вариация пасьянса «Скорпион».

Вам дана колода из 52 игральных карт, разложенных в семь столбцов. Каждый столбец может содержать произвольное количество карт, включая случаи, когда в некоторых столбцах нет карт (такие столбцы мы называем пустыми). Каждая карта имеет масть ($\diamondsuit, \heartsuit, \spadesuit$ или $\clubsuit$) и ранг (в порядке возрастания: A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K).

На каждом ходу вы можете сделать следующее: выбрать текущую карту в каком-либо столбце (можно выбрать любую) и переместить её вместе со всеми картами, лежащими поверх неё (нижняя часть столбца перемещается как единое целое), на нижнюю карту другого столбца. Вы можете переместить текущую карту только на карту той же масти, ранг которой ровно на 1 больше. Например, $5\spadesuit$ можно переместить только на $6\spadesuit$, а $A\heartsuit$ можно переместить только на $2\heartsuit$, как показано на рисунке ниже. Если текущая карта имеет ранг K, вы можете переместить её только в пустой столбец (вместе со всеми картами поверх неё) и только в том случае, если она лежит на другой карте (не является верхней картой столбца).

Цель игры — собрать 4 столбца с последовательностями мастей от короля до туза (K находится в верхней части столбца, а A — в нижней).

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

Вам даны 7 строк, $i$-я из которых описывает $i$-й столбец. $i$-я строка начинается с целого числа $k_i$ — количества карт в $i$-м столбце ($0 \le k_i \le 52$), за которым следуют $k_i$ двухсимвольных строк, описывающих карты в $i$-м столбце сверху вниз. Первый символ кодирует ранг («A», «2», «3», «4», «5», «6», «7», «8», «9», «T», «J», «Q» и «K» для A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q и K соответственно), второй символ кодирует масть («D», «H», «S» и «C» для $\diamondsuit, \heartsuit, \spadesuit$ и $\clubsuit$ соответственно).

Гарантируется, что входные данные содержат все 52 карты и каждая из них встречается ровно один раз.

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

Если выиграть игру невозможно, выведите «NO». В противном случае в первой строке выведите «YES», во второй строке — количество ходов, а в третьей строке — карты в порядке совершения ходов. Если существует несколько решений, выведите любое из них.

Примеры

Примеры 1

14 KD QD JD TD 9D 8D 7D 6D 5D 4D 3D 2D AD KH
12 AS 6C 5C 4C 3C 2C AC 6S 5S 4S 3S 2S
11 KS QS JS TS 9S 8S 7S 5H 4H 3H 2H
1 KC
0
11 8H 7H 6H QC JC TC 9C 8C 7C QH JH
3 AH TH 9H
YES
10
QH 6C AS KH AH QC 5H 6S TH 8H

Примеры 2

5 JH TH 9H JC AH
2 KH QH
6 6H 2C AC KD 8H 7H
6 QD JD 4H 3H KC QC
10 3S 2S AS 8S 7S 6S 5S 4S QS JS
12 3C TC 9C 8C 7C 6C 5C 4C KS TS 9S 2H
11 TD 9D 8D 7D 6D 5D 4D 3D 2D AD 5H
YES
20
JH KD 6H KS JC 8H QD KC 2H TS QS 8S 3S AH TC 3C 2C 5H 4H TD

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.