貪心 牛牛的排序

2021-10-02 07:07:54 字數 910 閱讀 7358

牛牛剛學完排序,他準備拿n個數一展身手,但是他發現現實中的排序與課堂裡的排序不一樣。

每次他只能對連續的n-1個數進行從小到大的排序。

請問牛牛最少需要幾次排序能將所有的數排成有序的。

第一行先輸入乙個整數n (3 ≤ ≤ 50)。

第二行輸入n個整數範圍在1到1000以內。

輸出乙個整數。

42 6 8 5

64 3 1 6 2 5

550 20 30 40 10

子任務1:n <= 10

子任務2:n <= 20

子任務3:無限制

這個題要分四種情況考慮

1.輸入的數本來就已經排好序了,那麼就不需要排序了,輸出0。

2.當輸入的第乙個數是最小或者最後乙個數是最大時,那麼最少需要1次排序。

3.當輸入的第乙個數是最大和最後乙個數是最小時,最少需要3次排序。

4.其他情況則至少需要2次排序。

#include

#include

#include

#include

#include

#include

using

namespace std;

int n;

int a[

101]

,b[101];

intmain()

if(maxsort

(b,b+n)

;int flag=0;

for(

int i=

0;iif(flag==0)

else

else

if(a[0]

==max&&a[n-1]

==min)

else

}return0;

}

貪心演算法 瘋狂的牛牛

瘋狂的牛牛 n個隔間 c頭牛 使每兩頭牛之間的最小距離最大化 思路 轉化為判定性問題 判斷間距d是否可行 對間距d採取二分策略 include include using namespace std const int maxn 1e5 10 int arr maxn bool judge int ...

NC21545 牛牛的遊戲(貪心)

首先發掘題目性質,題目要求,每個點,要不往左要不往右跳x 因此我們可能先想到排序,之後初始化答案為a n a 1 那麼接下來考慮使用貪心的想法,首先,在接下來的情況左邊界肯定不會往左挑,有邊界肯定不會往右跳 而且我們要使左邊界盡可能大,右邊界盡可能小。所以列舉每個點的跳躍情況時,就找一下左右邊界最近...

牛牛找工作(排序)

題目沒有給出時間範圍,第一次寫出之後t了。題目鏈結 下面是超時做法 時間複雜度為o mn include using namespace std int n,m define ll long long typedef pair pii pair a 100005 pair b 100005 bool...