QOJ.ac

QOJ

시간 제한: 2.0 s 메모리 제한: 512 MB 총점: 100 해킹 가능 ✓

#53. Ханойське сортування

통계

Jelefy грає в Ханойську вежу за особливим правилом.

Ханойська вежа має три стрижні $A$, $B$ та $C$, на які можна складати диски. Диски можна переміщувати між різними стрижнями, але необхідно дотримуватися таких правил:

  • За один раз можна перемістити лише один диск;
  • Кожен хід може перемістити лише верхній диск одного стрижня на верхівку іншого стрижня;
  • На стрижнях $B$ та $C$ жоден диск не можна класти поверх меншого диска;
  • На стрижні $A$ більші диски можна класти поверх менших дисків.

На початку Jelefy випадковим чином складає $n$ дисків різного розміру на стрижень $A$, залишаючи стрижні $B$ та $C$ порожніми. За наведених вище умов Jelefy хоче дізнатися, скільки ходів потрібно, щоб перемістити всі диски зі стрижня $A$ на стрижень $B$.

Вхідні дані

Перший рядок містить ціле число $T$ ($1\leq T\leq 10^4$), що позначає кількість наборів вхідних даних.

Для кожного набору вхідних даних: Перший рядок містить ціле число $n$ ($1\leq n\leq 10^5$), що позначає кількість дисків на стрижні $A$ у початковому стані.

Другий рядок містить $n$ цілих чисел $p_1,p_2,\ldots,p_n$ ($1\leq p_i\leq n$), де $p_i$ позначає діаметр $i$-го диска на стрижні $A$ знизу вгору. Гарантується, що $p_1,p_2,\ldots,p_n$ утворюють перестановку довжини $n$, тобто кожне ціле число від $1$ до $n$ зустрічається в послідовності рівно один раз.

Для всіх наборів вхідних даних гарантується, що $\sum n\leq 2\times 10^5$.

Вихідні дані

Для кожного набору вхідних даних виведіть одне ціле число в окремому рядку — мінімальну необхідну кількість ходів.

Приклади

Вхідні дані 1

3
5
1 5 3 2 4
5
1 2 3 4 5
6
5 3 6 1 4 2

Вихідні дані 1

11
5
19

Примітка

У першому прикладі одне з можливих рішень із мінімальною кількістю ходів таке ($X\rightarrow Y$ позначає переміщення верхнього диска зі стрижня $X$ на верхівку стрижня $Y$):

  • $A\rightarrow C$
  • $A\rightarrow B$
  • $A\rightarrow C$
  • $B\rightarrow C$
  • $A\rightarrow B$
  • $C\rightarrow A$
  • $C\rightarrow A$
  • $C\rightarrow B$
  • $A\rightarrow B$
  • $A\rightarrow B$
  • $A\rightarrow B$

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#737EditorialOpenAuthor's Editorial for Problem #53 Hanoi SortJelefyView

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.