沙灘擺放著一排大小不一的球形石頭,已知第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個石頭在最左邊或最右邊。問最少需要操作多少次才能...