QOJ.ac

QOJ

Time Limit: 1.5 s Memory Limit: 256 MB Total points: 100

#103. 錢

Statistics

AlanashKO 好鍾意錢。除夕嗰陣,佢收到咗 $N$ 張鈔票。每張鈔票嘅面額都係正整數。玩緊嗰陣,AlanashKO 將所有鈔票排成一行,由左至右編號做 $1$ 至 $N$。跟住,佢決定將所有鈔票按面額由細到大排好(容許相同面額)。

為此,AlanashKO 會做以下步驟:首先,佢將鈔票分成一段或多段互不重疊嘅連續子段,每張鈔票都屬於其中一段。然後,按由左至右嘅次序,將各個子段逐一插入新嘅一行,即係先插入最左邊嘅子段(第一段),再插入下一個最左邊嘅子段,如此類推。每個子段都可以插入新一行當時任意兩張鈔票之間,或者插喺其中一端。插入時,子段內鈔票嘅次序唔會改變。

AlanashKO 想令子段數目最少,同時最終可以將所有鈔票按面額非遞減排序。請幫佢搵出呢個數值。

輸入格式

第一行包含一個正整數 $N$($1 \le N \le 10^6$),表示鈔票數目。下一行包含 $N$ 個正整數 $a_i$($1 \le a_i \le 10^6$),表示第 $i$ 張鈔票嘅面額。

輸出格式

輸出一行一個整數,表示令 AlanashKO 可以將鈔票排好所需嘅最少子段數目。

評分

本題包含四個子任務:

  1. $N \le 8$。佔 9 分。
  2. $N \le 20$。佔 16 分。
  3. $N \le 300$。佔 20 分。
  4. $N \le 10^6$。佔 55 分。

只有當程式成功通過之前所有子任務,先會獲得該子任務嘅分數。

樣例

輸入格式 1

6
3 6 4 5 1 2

輸出格式 1

3

說明

子段係一段連續嘅序列。

睇吓樣例:

最少要分成 3 段:|3 6|4 5|1 2|(直線表示子段邊界)。

第一步之後,原本嗰行係 |4 5|1 2|,新一行係 |3 6|。

第二步將子段 |4 5| 插喺 $3$ 同 $6$ 之間。

第二步之後,原本嗰行係 |1 2|,新一行係 |3 4 5 6|。

跟住將子段 |1 2| 插喺新一行嘅開頭,結果係 |1 2 3 4 5 6|。

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.