第一周 2 3成績排序

2021-09-12 12:23:08 字數 1579 閱讀 7670

有 n 名學生,它們的學號分別是 1,2,…,n。這些學生都選修了鄧老師的演算法訓練營、資料結構訓練營這兩門課程。

學期結束了,所有學生的課程總評都已公布,所有總評分數都是 [0,100] 之間的整數。巧合的是,不存在兩位同學,他們這兩門課的成績都完全相同

鄧老師希望將這些所有的學生按這兩門課程的總分進行降序排序,特別地,如果兩位同學的總分相同,那鄧老師希望把演算法訓練營得分更高的同學排在前面。由於上面提到的巧合,所以,這樣排名就可以保證沒有並列的同學了。

鄧老師將這個排序任務交給了他的助教。可是粗心的助教沒有理解鄧老師的要求,將所有學生按學號進行了排序。

鄧老師希望知道,助教的排序結果中,存在多少逆序對

如果對於兩個學生 (i,j) 而言,i 被排在了 j 前面,並且i本應被排在 j 的後面,我們就稱 (i,j) 是乙個逆序對

請你先幫鄧老師把所有學生按正確的順序進行排名,再告訴他助教的錯誤排名中逆序對的數目。

第一行乙個整數 n,表示學生的個數。

第 2 行到第 n+1 行,每行 2 個用空格隔開的非負整數,第 i+1 行的兩個數依次表示學號為 i 的同學的演算法訓練營、資料結構訓練營的總評成績。

輸出包含 n+1 行。

前 n 行表示正確的排序結果,每行 4 個用空格隔開的整數,第 i 行的數依次表示排名為 i 的同學的學號、總分、演算法訓練營成績、資料結構訓練營成績。

第 n+1 行乙個整數,表示助教的錯誤排名中逆序對的數目。

3

95 85

90 90

100 99

3 199 100 99

1 180 95 85

2 180 90 90

2

學號為 3 的同學總分為 199,是最高的,所以他應該排第一名。

學號為 1 的同學雖然總分與學號為 2 的同學一致,但是他的演算法訓練營成績更高,所以在排名規則下更勝一籌。

原錯誤排名中的逆序對數目為 2 ,這些逆序對分別為 (1,3) 和 (2,3)。

對於 25% 的資料,保證 n=3。

對於 50% 的資料,保證 n≤10。

對於另外 25% 的資料,保證所有同學的總分兩兩不同。

對於 100% 的資料,保證 n≤5,000 ,且保證不存在成績完全相同的學生。

時間限制:10 sec

空間限制:256 mb

[可以使用起泡排序將所有學生進行排名。]

[善良的助教提醒你,在起泡排序的過程中,每次交換都會使逆序對數目減少 1 哦!想一想,為什麼?]

[聰明的助教還告訴你,這道題可以設計出時間複雜度為 o(nlogn) 的演算法。這會在今後的課程中涉及到。]

另外,為了幫助大家完成題目,我們提供了只包含了輸入輸出功能的程式模板,也提供了含有演算法的大部分實現細節的程式。

你可以根據自己的實際情況,在這些程式的基礎上進行作答,或不參考這些程式,這將與你的得分無關。

python第一周心得 Python第一周總結

變數 不能為系統自帶的內建函式,如def,help,sum等等 變數不能已下劃線數字來開頭,對大小寫敏感 變數後直接接數字,則被賦值為整型,如何加引號則賦值型別為字串str型別 a 1 整型 int b 2 字串 str 用print 直接輸出 a hello print a 在 使用者想要同時輸出...

第一周周記

下面是整個文章的第二部分,日常的安利 這周的話,除了整體恢復正常,週末我也購置了我的第一塊外接鍵盤,這裡的話我選擇的是國產的靜電容鍵盤niz的plum 87鍵鍵盤。今天拿到這個鍵盤第一天,整體使用了一下,尺寸配合著15寸的蘋果macbook pro可以說恰到好處,除此以外,整個鍵盤還是給我不少驚喜的...

寒假第一周

寫了這個標題,感覺有點像寫周記的味道.那就盡量堅持這個寒假裡至少每週一篇吧。這幾天學校裡真的好清靜了,實驗室和寢室都沒人了。其實說起來這周算是我們寒假的第二週了吧,14號就全部考完了,從放假的基本定義來看,那時候就算是寒假了。只不過上週這邊人還比較多,而且本科生也都沒考完,校歷上也是這週才算開始放假...