QOJ.ac

QOJ

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

#1456. StalinSort 算法

Statistiques

有一种深奥的排序算法叫做 StalinSort。它的过程如下:

从左到右遍历给定数组的元素,从第二个元素开始。如果当前元素不小于前一个元素,则什么都不做;否则,将其删除。最终你会得到一个有序数组。

StalinSort 可以在 $O(n)$ 时间内实现,这非常酷。但有一个问题:在这个过程中你可能会丢失很多元素。为了解决这个问题,我想出了这个算法的一个改进的非确定性版本。

从左到右遍历给定数组的元素,从第二个元素开始。如果当前元素不小于前一个元素,则什么都不做;否则,你有两种选择:你可以删除当前元素,或者删除前一个元素,但前提是当前前缀仍然保持非递减。最终你会得到一个有序数组。

根据所做的选择,该算法可以删除不同数量的元素。我想知道,对给定的排列应用这个改进版的 StalinSort,我能得到的最少删除元素数量是多少?

输入格式

第一行包含一个正整数 $n$ ($1 \le n \le 5 \cdot 10^5$),表示排列的大小。 第二行包含 $n$ 个整数 $p_i$ ($1 \le p_i \le n$),表示排列本身。保证所有 $p_i$ 互不相同。

输出格式

输出一个数字,表示改进版 StalinSort 可以删除的最少元素数量。

样例

样例输入 1

6
6 1 2 3 4 5

样例输出 1

1

样例输入 2

6
5 6 1 2 3 4

样例输出 2

4

样例输入 3

6
6 4 5 1 2 3

样例输出 3

3

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.