陣列重排(貪心)

2021-08-08 03:01:09 字數 724 閱讀 2129

給定乙個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個數最多移動n次就形成乙個遞增序列;如果最後乙個數是最大的就不需要移動,第n-1個是倒數第二大的也不需要動,只有當第i個數不是i時才移動;

#include #include #include #include #include using namespace std;

vectorvec;

int main()

}cout << maxx << endl;

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...

shuffle 重排陣列

在一些應用中,我們可能希望按不同的方式對陣列進行排序。函式shuffle 將陣列進行隨機排序。函式array reverse 則可以將原陣列反向排序。bob想讓其 首頁上的產品能夠反應出公司的特色,他擁有很多產品,但希望能夠每次從中隨機抽取出三種產品顯示在首頁上。為了不至於讓多次登入 的訪問者感到厭...

陣列奇偶重排

2019 04 06 題目描述 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的 後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。include include using namespace std void reordera...