hihoCoder 1523 陣列重排2 貪心

2021-08-01 11:52:26 字數 1056 閱讀 8441

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

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

思路:最後的序列是遞增的,那麼

i<

j 必定滿足po

s(i)

s(j)

,pos

(i) 表示數字

i 最終的位置。如果當前的po

s(i)

>po

s(i+

1)此時必須把i移到最左邊,就這樣依次處理n-1到1就行。

ac**

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#pragma comment(linker, "/stack:1024000000,1024000000")

#define eps 1e-10

#define inf 0x3f3f3f3f

#define pii pair

typedef

long

long ll;

const

double pi = acos(-1.0);

const

int maxn = 1e5 + 5;

int a[maxn], pos[maxn];

int main()

int now = 0;

for(int i = n-1; i >= 1; --i)

} printf("%d\n", tol);

}return

0;}

如有不當之處歡迎指出!

HihoCoder 1523 陣列重排2

給定乙個1 n的排列a1,a2,an,每次操作小hi可以選擇乙個數,把它放到陣列的最左邊。請計算小hi最少進行幾次操作就能使得新陣列是遞增排列的。input 第一行包含乙個整數n。第二行包含n個兩兩不同整數a1,a2,an。1 ai n 對於60 的資料 1 n 20 對於100 的資料 1 n 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 ...