QOJ.ac

QOJ

Time Limit: 1.0 s Memory Limit: 512 MB Total points: 100

#18081. Chains Solitaire

Statistics

Trong bài toán này, một biến thể của trò chơi xếp bài Scorpion được giới thiệu.

Bạn được cho một bộ bài gồm 52 lá được chia thành bảy cột. Mỗi cột có thể có số lượng lá bài tùy ý, bao gồm cả trường hợp không có lá bài nào trong một số cột (chúng ta gọi các cột như vậy là cột trống). Mỗi lá bài có một chất ($\diamondsuit, \heartsuit, \spadesuit, \clubsuit$) và một giá trị (theo thứ tự tăng dần: A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K).

Trong mỗi lượt, bạn được phép thực hiện thao tác sau: chọn lá bài hiện tại trong một cột nào đó (bạn có thể chọn bất kỳ lá nào) và di chuyển nó cùng với tất cả các lá bài nằm trên nó (một phần dưới của cột được di chuyển như một đơn vị) đặt lên lá bài dưới cùng của một cột khác. Bạn chỉ được phép di chuyển lá bài hiện tại lên một lá bài cùng chất và có giá trị lớn hơn đúng 1 đơn vị. Ví dụ, $5\spadesuit$ chỉ có thể được di chuyển lên $6\spadesuit$, và $A\heartsuit$ chỉ có thể được di chuyển lên $2\heartsuit$ như được minh họa trong hình dưới đây. Nếu lá bài hiện tại có giá trị K, bạn chỉ được phép di chuyển nó vào một cột trống (cùng với tất cả các lá bài nằm trên nó) và chỉ khi nó đang nằm trên một lá bài khác (không phải ở trên cùng của một cột).

Mục tiêu của trò chơi là xây dựng 4 cột theo trình tự chất từ K đến A (K ở trên cùng của cột, và A ở dưới cùng).

Dữ liệu vào

Bạn được cho 7 dòng, dòng thứ $i$ mô tả cột thứ $i$. Dòng thứ $i$ bắt đầu bằng số nguyên $k_i$ — số lượng lá bài trong cột thứ $i$ ($0 \le k_i \le 52$), theo sau là $k_i$ chuỗi hai ký tự mô tả các lá bài trong cột thứ $i$ từ trên xuống dưới. Ký tự đầu tiên mã hóa giá trị (“A”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “T”, “J”, “Q” và “K” tương ứng cho A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q và K), ký tự thứ hai mã hóa chất (“D”, “H”, “S” và “C” tương ứng cho $\diamondsuit, \heartsuit, \spadesuit$ và $\clubsuit$).

Đảm bảo rằng dữ liệu đầu vào chứa đủ 52 lá bài và mỗi lá bài xuất hiện đúng một lần.

Dữ liệu ra

Nếu không thể thắng trò chơi, in ra “NO”. Ngược lại, ở dòng đầu tiên in ra “YES”, ở dòng thứ hai in ra số lượng nước đi, và ở dòng thứ ba in ra các lá bài theo thứ tự thực hiện các lượt đi. Nếu có nhiều lời giải, hãy in ra bất kỳ lời giải nào.

Ví dụ

Ví dụ 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

Ví dụ 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.