51 Nod 1700 首尾排序法

2022-08-11 02:51:07 字數 867 閱讀 4083

有乙個長度為n的陣列 p1, p2, p3, ⋯, pnp1, p2, p3, ⋯, pn ,裡面只包含1到n的整數,且每個數字都不一樣。現在要對這個陣列進行從小到大排序,排序的時候只能是把乙個數字拿過來放到陣列末尾或者開頭,問最少要操作幾次才能使得這個陣列從小到大排序。

樣例解釋:

先把4移動到最後,然後再把5移動到後。

收起

單組測試資料。

第一行乙個整數n (1≤n≤100000),表示陣列的長度。

第二行有n個整數 pi (1≤pi≤n, 如果 i≠j,那麼pi≠pj ) ,表示陣列中的數字。

輸出乙個整數,表示最少要操作幾次才能使得陣列從小到大有序。
5

4 1 2 5 3

2
思路:求乙個最長的連續的子串(如樣例中的1,2,3) 的長度len, 答案即為 n-len

**如下:

#includeusing namespace std;

int a[100005];int n;

int par[100005];

bool vis[100005];

int dp[100005];

int len=0;

int dfs(int i)

int p=par[i];

if(dp[p]!=0)

return dfs(par[i]);

}int main()

else vis[a[i]]=1;

}for(int i=1;i<=n;i++)

len=max(dfs(i),len);

int ans=n-len;

cout

}

51nod 首尾排序法 01

題意 有乙個長度為n的陣列 p1,p2,p3,pnp1,p2,p3,pn 裡面只包含1到n的整數,且每個數字都不一樣。現在要對這個陣列進行從小到大排序,排序的時候只能是把乙個數字拿過來放到陣列末尾或者開頭,問最少要操作幾次才能使得這個陣列從小到大排序 輸入要求 第一行乙個整數n 1 n 100000...

結對開發6 首尾相連矩陣

結對成員 范德一 趙永恆 一.題目與要求 題目 返回乙個二維整數陣列中最大子陣列的和 要求 1 輸入乙個二維整形陣列,陣列裡有正數也有負數。2 二維陣列首尾相接,象個一條首尾相接帶子一樣。3 陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和 二.設計思路 在上一次的以為迴圈陣列的基礎上...

NYOJ 983 首尾相連陣列的最大子陣列和

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述給定乙個由n個整數元素組成的陣列arr,陣列中有正數也有負數,這個陣列不是一般的陣列,其首尾是相連的。陣列中乙個或多個連續元素可以組成乙個子陣列,其中存在這樣的子陣列arr i arr n 1 arr 0 arr j 現在請你這個...