HihoCoder 1523 陣列重排2

2021-08-30 08:41:59 字數 739 閱讀 1413

給定乙個1-n的排列a1, a2, ... an,每次操作小hi可以選擇乙個數,把它放到陣列的最左邊。

請計算小hi最少進行幾次操作就能使得新陣列是遞增排列的。

input

第一行包含乙個整數n。

第二行包含n個兩兩不同整數a1, a2, ... an。(1 <= ai <= n)

對於60%的資料 1 <= n <= 20

對於100%的資料 1 <= n <= 100000

output

乙個整數代表答案

sample input

5

2 3 1 4 5

sample output

1
題解:數列最後的順序從後往前看應該為從n到1,因為我們運算元字的時候只能拿到最前面,因此原先數列從後往前看,從n按順序減少的都不需要動了,其他的數字都需要移動一次,例如,2 4 1 3 5,從後往前按順序查詢,先找5,然後是4,依次減小,但是符合的只有5 4,因此我們移動的時候把3 2 1從大到小依次往前移動就好了。

#include#include#include#includeusing namespace std;

const int n=100100;

int n;

int a[n];

int main()

} cout<} return 0;

}

hihoCoder 1523 陣列重排2 貪心

題意 給定乙個1 n的排列a1,a2,an,每次操作小hi可以選擇乙個數,把它放到陣列的最左邊。請計算小hi最少進行幾次操作就能使得新陣列是遞增排列的。思路 最後的序列是遞增的,那麼 i j 必定滿足po s i s j pos i 表示數字 i 最終的位置。如果當前的po s i po s i 1...

hihocoder 1523 陣列重排2 思維

參考 題意 每次可以移動陣列中的乙個數到陣列的最左邊,問最少運算元,使得數列公升序 思路 因為每次移動到最左邊,所以從右邊開始 這樣移動後不會影響之前的判斷 如果這個數是結果位子的數,就不用移動,就在ans中 1 include using namespace std const int maxn ...

hihocoder 字尾陣列

時間限制 5000ms 單點時限 1000ms 記憶體限制 256mb 描述小hi平時的一大興趣愛好就是演奏鋼琴。我們知道乙個 旋律被表示為長度為 n 的數構成的數列。小hi在練習過很多曲子以後發現很多作品自身包含一樣的旋律。旋律是一段連續的數列,相似的旋律在原數列可重疊。比如在1 2 3 2 3 ...