搬石頭


提交程序

分数: 100 (部分)
时间限制: 1.0s
内存限制: 256M

作者:
题目类型
允许的语言
C, C++

在一個風和日麗的下午,你走在路上趕著去找你最愛的鄰國公主,突然你發現眼前出現 \(n\) 顆重量皆不相同的石頭排成一排擋住了你的去路,唉,真是不幸,明明公主近在眼前,但你必須先清除眼前這排擋路的巨石,幸好身為嬌貴的王子,你可以命令壯丁幫你完成這麻煩事。

壯丁每次可以選一顆石頭清理,但為了講求效率,同一位壯丁不能回頭清石頭(不然他可能會被後面的人撞到很危險)。你靠近仔細觀察了一下,你發現這些擋路的石頭不是一般的石頭,每次在清除石頭時,石頭的重量必須大於上一次清理的石頭重量。那麼問題來了,請問王子最少可以派幾位壯丁來幫他清除完道路上遇到的巨石呢?

輸入格式

第一行有一個整數 \(n\),表示路上的巨石數量。
接下來一行有 \(n\) 個數 \(a_1,a_2,...,a_n\),表示路上每顆石頭分別的重量。

  • 保證每顆石頭的重量 \(a_i\) 皆不會重複
  • \(1\leq n\leq 2 \times 10^5\)
  • \(1\leq a_i\leq n\)

輸出格式

輸出一個正整數,表示王子最少需要派幾名壯丁清除石頭

範例輸入1

5
4 2 1 5 3

範例輸出1

3

範例輸入2

5
1 2 3 4 5

範例輸出2

1

說明

在範例測資 \(1\) 中,最少只需要 \(3\) 位壯丁,第一位壯丁可以依序搬重量為 \(1,5\) 的石頭,第二位壯丁可以依序搬重量為 \(2,3\) 的石頭,第三位壯丁可以依序搬重量為 \(4\) 的石頭。
在範例測資 \(2\) 中,最少只需要 \(1\) 位壯丁,第一位壯丁可以依序搬重量為 \(1,2,3,4,5\) 的石頭。

子題

#No. 額外限制 分數
1 \(1\leq n \leq10\) 30
2 無其他限制 70

评论

目前没有评论。