搬石頭排序

2021-09-28 19:15:46 字數 584 閱讀 8538

沙灘擺放著一排大小不一的球形石頭,已知第i個石頭的半徑為ri,不存在兩個石頭半徑相等。現要求通過移動石頭使擺放的石頭從左往右半徑遞增。每次可選擇一塊石頭,並把它放在剩下n-1塊石頭的最左邊或最右邊。求最少操作次數。

第一行乙個整數n,表示石頭個數。(1 <= n <= 100000).第二行n個整數,表示從左往右石頭的半徑r1,r2,…,rn( 1<= ri <= n)。保證不存在兩個不同的石頭半徑相等。

最少操作次數。

63 2 1 4 6 5

保持原序列中最大遞增1的子串行(樣例中3 4 5)不變,移動其他石頭。那麼只需求出最大遞增1的子串行長度,再用總長度減去子串行長度,即為需移動數目。

#include

using

namespace std ;

intmain()

for(

int i =

0; i < n; i++)}

if(num > maxr)

//更新遞增1子串行的長度

num =1;

} cout

("pause");

}

搬石頭排序的最少次數

題目描述 沙灘擺放著一排大小不一的球形石頭,已知第i個石頭的半徑為ri,不存在兩個石頭半徑相等。現要求通過移動石頭使擺放的石頭從左往右半徑遞增。每次可選擇一塊石頭,並把它放在剩下n 1塊石頭的最左邊或最右邊。求最少操作次數。輸入描述 第一行乙個整數n,表示石頭個數 1 n 100000 第二行n個整...

GridView 表頭排序

mscl.until.cutstring eval storename tostring 10,true eval isactive tostring 1 是 否 850,500 檢視 850,500 編輯 刪除 排序的後置 region 私有變數 排序 protected string js st...

c 程式設計例項之河邊搬石頭

問題描述 沙灘按照線型擺放著n個大小不一的球形石頭,已知第i個石頭的半徑為ri,且不存在兩個石頭有相同的半徑。為了使石頭的擺放更加美觀,現要求擺放的石頭的半徑從左往右依次遞增。因此,需要對一些石頭進行移動,每次操作可以選擇乙個石頭,並把它放在剩下n 1個石頭在最左邊或最右邊。問最少需要操作多少次才能...