Sort解題報告

2021-09-10 22:27:54 字數 1463 閱讀 5564

題目鏈結

這道題是乙個好題,考察對排序基本演算法的理解,綜合性強。

60 pt

s60pts

60pt

s:氣泡排序,剩下的自己腦補。

85 pt

s85pts

85pt

s:全是0/1的情況,使用歸併排序,過程自己腦補。

100 pt

s100pts

100pts

:使用快速排序,回想快速排序的過程:

選擇乙個基準數。然後把小的放左邊,大的放右邊,兩部分分別遞迴下去。

把基準數小的看成0,大的看成1,先歸併排序,把這個抽象出來的0/1序列排好序。

然後在回到快速排序的過程中,把兩部分遞迴下去。

時間複雜度的證明:

資料保證隨機,所以快速排序的層數一共有log層,每一層上進行歸併排序是nlo

gn

n logn

nlogn的。

所以時間複雜度o(n

(log

n)2)

o(n (logn)^2)

o(n(lo

gn)2

)注意判一下區間全部相等的情況,不然死迴圈。

/*header*/

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define gc getchar()

#define pc putchar

#define mk make_pair

#define fi first

#define se second

#define rep(i , x, p) for(int i = x;i <= p;++ i)

using std::min;

using std::max;

using std::swap;

const

int maxn =

50000+7

;inline

intgi()

while

(c >=

'0'&& c <=

'9')

return x * f;

}int a[maxn]

, c[maxn]

;void

merge_sort

(int l,

int r)

else

break;}

}bool

check

(int l ,

int r)

void

qsort

(int l ,

int r)

intmain()

Block Voting 解題報告

這道題做的有點狼狽,效率不高,差一點就tle的ac了。看status裡的,ac的時間大多數都是0ms的。肯定有乙個更有效率的演算法的。下面說下我的狼狽演算法。出處 http acm.jlu.edu.cn joj showproblem.php?pid 1223 問題描述 求每個party的權值。第i...

Safebreaker 解題報告

又是吉林大學一道acm題目,題目很簡單,直接暴力解決。出處 http acm.jlu.edu.cn joj showproblem.php?pid 1718 問題描述 對乙個給定數0000 9999 根據一系列猜測,判斷這個數是否存在,存在的話,是否唯一 例如 3321,給定數 作出猜測,1223 ...

路由 解題報告

路由 問題描述 有乙個tcp ip網路 每台計算機都有乙個或多個網路介面。每個介面根據它的ip位址和子網掩碼來識別 即兩個4位元組的數,兩個字 節之間有乙個 號.子網掩碼有乙個二進位制表示法 有k個 1 然 後是 m 個 0 k m 8 4 32 如 212.220.35.77 是乙個 ip 地 址...