2007 NOIP T1獎學金(詳解)

2021-10-02 06:15:59 字數 1612 閱讀 8551

獎學金(07noipt1)

某小學最近得到了一筆贊助,打算拿出其中一部分為學習成績優秀的前5名學生發獎學金。期末,每個學生都有3門課的成績:語文、數學、英語。先按總分從高到低排序,如果兩個同學總分相同,再按語文成績從高到低排序,如果兩個同學總分和語文成績都相同,那麼規定學號小的同學 排在前面,這樣,每個學生的排序是唯一確定的。

任務:先根據輸入的3門課的成績計算總分,然後按上述規則排序,最後按排名順序輸出前五名名學生的學號和總分。注意,在前5名同學中,每個人的獎學金都不相同,因此,你必須嚴格按上述規則排序。例如,在某個正確答案中,如果前兩行的輸出資料(每行輸出兩個數:學號、總分)是:7 279 5 279

這兩行資料的含義是:總分最高的兩個同學的學號依次是7號、5號。這兩名同學的總分都是279(總分等於輸入的語文、數學、英語三科成績之和),但學號為7的學生語文成績更高一些。如果你的前兩名的輸出資料是:

5 279 7 279 則按輸出錯誤處理,不能得分。

【輸入】 第1行為乙個正整數n,表示該校參加評選的學生人數。

2到n+1行,每行有3個用空格隔開的數字,每個數字都在0到100之間。第j行的3個數字依次表示學號為j−1的學生的語文、數學、英語的成績。每個學生的學號按照輸入順序編號為l∼n

(恰好是輸入資料的行號減1)。

所給的資料都是正確的,不必檢驗。

【輸出】 共有5行,每行是兩個用空格隔開的正整數,依次表示前5名學生的學號和總分。

【輸入樣例】

690 67 80

87 66 91

78 89 91

88 99 77

67 89 64

78 89 98

【輸出樣例】

6 265

4 264

3 258

2 244

1 237

理解一下,就是你要對每個同學的成績進行排序,取前5名的人得獎學金,排序方法:1.總分高的排名高,總分相等排語文(why?)

這道題可謂是比較簡單,主要用到排序演算法和結構體,這裡不推薦大家用快速排序sort,因為還要考慮語文成績。

1.定義結構體,存語文、數學、英語三科的成績總分,以及本人的學號

2.通過迴圈輸入到陣列中,學號即為i,總分=三科成績之和

3.排序,先對總分比較,遇到總分相同時,對語文成績進行比較

4.輸出

ac**,大家參考:

#include

#include

#include

using

namespace std;

struct na[

301]

,ppap;

intmain()

for(

int i=

0;i1;i++

)else

if(a[j]

.z==a[j+1]

.z)}}}

for(

int i=

0;i<

5;i++

)return0;

}

謝謝大家

IOI2007 D1T1 Miners 礦工配餐

題目大意 有 2 個煤礦,n 天。每天給乙個煤礦送餐 共有有 3 種餐 價值為它與前面兩次送餐 如果有的話 不同的種類數。最大化價值。題解 看到只有三種餐,考慮狀壓 dp f 表示現在是第 i 天,第乙個煤礦上一次為 j 再上一次為 k 沒有為 0 l,m 同理。calc a,b,c 為求出這三個數...

noip2007 tg day1t1 統計數字

題目描述 某次科研調查時得到了n個自然數,每個數均不超過1500000000 1.5 10 9 已知不相同的數不超過10000個,現在需要統計這些自然數各自出現的次數,並按照自然數從小到大的順序輸出統計結果。輸入輸出格式 輸入格式 輸入檔案count.in包含n 1行 第一行是整數n,表示自然數的個...

JSOI2007 乳酪 題解 貪心 O 1

pid227 jsoi2007 乳酪 檢視最後一次評測記錄 題目評價 質量 4 0 16.6 16.6 16.6 50 通過統計 最短耗時 0ms 最小記憶體 0kb 題目標籤 型別 貪心模擬 jsoi2007 題目描述 乳酪和pizza一樣,是一小塊扇形的固體。在乳酪從工廠裡生產出來的時候,一共有...