時間限制:c/c++ 5秒,其他語言10秒
空間限制:c/c++ 262144k,其他語言524288k
64bit io format: %lld
題目描述
操場上有n個人排成一隊,這n個人身高互不相同,可將他們的身高視為乙個1到n的排列。
這時需要把隊伍變成公升序,也就是從矮到高排序。
每次可以選擇乙個人,讓這個人和在他身後的人比高矮,如果比對方高,則交換位置並繼續下一次比較,直到比對方矮或者已經在隊尾。
現在給出數n和乙個1到n的排列,求最少的選擇次數,使隊伍變為公升序。
示例1輸入
4,[4,1,2,3]
返回值1
備註:n<=10^6
資料報含乙個整數n和乙個含有n個元素的陣列,表示從隊頭到隊尾的人的身高。
輸出乙個整數表示答案。
題解:
從後往前遍歷,每次找到乙個比minn大的數就s++,否則就更新minn的值
**:
#include
int a[
1000010];
intmain()
printf
("%d\n"
,s);
return0;
}
牛客 奇怪的排序問題(單調棧 遍歷)
操場上有n個人排成一隊,這n個人身高互不相同,可將他們的身高視為乙個1到n的排列。這時需要把隊伍變成公升序,也就是從矮到高排序。每次可以選擇乙個人,讓這個人和在他身後的人比高矮,如果比對方高,則交換位置並繼續下一次比較,直到比對方矮或者已經在隊尾。現在給出數n和乙個1到n的排列,求最少的選擇次數,使...
牛客 組隊競賽
題目解析 此題題意,這是乙個求最優解的問題,三人一對,由首行n輸入的值來確定隊伍數目,我們為保證所有隊伍的水平值總和為最大值,則需讓隊伍中第二大的值盡量大。所以將最大值放到最右邊,最小是放左邊.解題思路 1.本題的主要思路是貪心演算法,就是每次選值時都選當前能看到的區域性最優解,所以這裡的貪心就是保...
牛客競賽Anagram
一 題目 二 題意 給定兩個長度一樣的字串 均為大寫字母 計算將a變為和b一樣的構成最少需要多少步。三 思路 將a和b分別按字母順序排序,由於可能存在輪迴向前找的情況,為了避免繞大圈,所以直接將a的當前字母和b的尾巴上未匹配的字母進行操作。四 include include include intc...