題意:給定乙個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 ...