奇怪的排序問題(牛客競賽)

2021-10-12 09:55:45 字數 692 閱讀 7861

時間限制: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...