沒有
陣列arr是[0, 1, …, n - 1]的一種排列,我們將這個陣列分割成幾個「塊」,並將這些塊分別進行排序。之後再連線起來,使得連線的結果和按公升序排序後的原陣列相同。
我們最多能將陣列分成多少塊?
輸入格式
共兩行。
第一行為正整數n,代表陣列有n個數。
第二行為n個整數。
輸出格式
最多能將陣列分成的塊數。
樣例1輸入
5 4 3 2 1
樣例1輸出
解釋:將陣列分成2塊或者更多塊,都無法得到所需的結果。
例如,分成 [5, 4], [3, 2, 1] 的結果是 [4, 5, 1, 2, 3],這不是有序的陣列。
樣例2輸入
2 1 3 4 4
樣例2輸出
解釋:我們可以把它分成兩塊,例如 [2, 1], [3, 4, 4]。
然而,分成 [2, 1], [3], [4], [4] 可以得到最多的塊數。
arr的長度在[1, 2000]之間。
arr[i]的大小在[0, 10^8]之間。
我們可以用兩個陣列:乙個原陣列,乙個已經排好序的陣列來檢查到第i位時是否已經排好
如樣例二:
第一位不一樣,不管
第二位,前兩個數一樣,已經完成了此塊的排序,ans++,可以多分一塊
第三,四,五個也是如此,既然都一樣,那麼都是ans++,分出三塊
那麼怎麼比前這麼多位的數字相同呢?只需要字首和就搞定了。
那麼有人會問,如果兩個不一樣但和相等呢?
這其實是沒有影響的,比如2,2和1,3,雖然和相等,但是1肯定排在前面,2在後面,兩個不會在一起比較,沒有影響
另外也可以用標記的方法,但我不會
**:
#include
#include
using
namespace std;
int n,a[
2005
],k=
0,b[
2005
],f=
-1000
;int
main()
sort
(b+1
,b+n+1)
;for
(int i=
1;i<=n;i++
)for
(int i=
1;i<=n;i++
)printf
("%d"
,k);
return0;
}
完
順便一提這道題l老師十分鐘就做出來了,果然我跟大佬的差距還很大,要加油鴨!
單調棧 雜湊表 768 最多能完成排序的塊 II
2020 05 13 09 38 46 問題描述 這個問題和 最多能完成排序的塊 相似,但給定陣列中的元素可以重複,輸入陣列最大長度為2000,其中的元素最大為10 8。arr是乙個可能包含重複元素的整數陣列,我們將這個陣列分割成幾個 塊 並將這些塊分別進行排序。之後再連線起來,使得連線的結果和按公...
malloc最多能分配多大的記憶體空間?
malloc的全稱是memory allocation,中文叫動態記憶體分配,用於申請一塊連續的指定大小的記憶體塊區域以void 型別返回分配的記憶體區域位址,當無法知道記憶體具體位置的時候,想要繫結真正的記憶體空間,就需要用到動態的分配記憶體。void 型別表示未確定型別的指標。c,c 規定,vo...
使用python測測你的系統最多能建立多少個執行緒
使用python測測你的系統最多能建立多少個執行緒 2012 12 09 08 27 00 收藏 使用乙個迴圈,不斷的建立執行緒,直到出現異常,才通知它們。python真是個好東西。如下 usr bin env python coding gbk import threading import ti...