時間限制
200 ms
記憶體限制
65536 kb
**長度限制
8000 b
判題程式
standard
作者 chen, yue
為了用事實說明挖掘機技術到底哪家強,pat組織了一場挖掘機技能大賽。現請你根據比賽結果統計出技術最強的那個學校。
輸入格式:
輸入在第1行給出不超過105的正整數n,即參賽人數。隨後n行,每行給出一位參賽者的資訊和成績,包括其所代表的學校的編號(從1開始連續編號)、及其比賽成績(百分制),中間以空格分隔。
輸出格式:
在一行中給出總得分最高的學校的編號、及其總分,中間以空格分隔。題目保證答案唯一,沒有並列。
輸入樣例:
6輸出樣例:3 65
2 80
1 100
2 70
3 40
3 0
2 150
提交**
//注意程式不能太長了,大小是有限制的。pat結果是17分,執行超時,多半是因為vector的關係。可能用指標結合二維陣列這樣的方式會比較好
struct compr//定義結構體,對應每個參賽者和他的分數
;struct sch//學校結構體,對應學校和相應的總分
;int main()
for (int i = 1; i < comprs.size(); i++)//將輸入的資料,按學校的編號進行排序
comprs[j + 1].sn = key;
comprs[j + 1].scr = keyscr;
} vectorscls;
sch scl;
scl.sn = comprs[0].sn;
scl.allscr = comprs[0].scr;
for (int i = 1; i < comprs.size(); i++)//根據編號,順序計算每個學校得到的總分
else
}int finalscl = scl.sn;
scl.allscr = 0;
for (int i = comprs.size() - 1; i >= 0; i--)//由於前面程式的設計缺陷,重新計算最後乙個學校得到的總分
}scls.push_back(scl);
for (int i = 1; i < scls.size(); i++)//根據分數進行排序,使用的是插入排序的思想
scls[j + 1].allscr = keyscr;
scls[j + 1].sn = keysn;
} cout << scls[0].sn << " " << scls[0].allscr;//最後對結果進行輸出
return 0;
}
第二版本**,由於之前學了一點hash表,其實這題用hash的形式來解答會簡單很多。學校的代號就是陣列的下標,分數就是對應的下標值,計算出來,輸出就可以了
得分17分,我感覺應該是學校編號有可能不一定小於10000的原因造成的錯誤。所以下面的**中,我把num的大小擴大十倍,換成100000,答案就對了,也不會執行超時
#include#include #include#include#include#include #include #include using namespace std;
int main()
; for (int i = 0; i < n; i++)
int max = 0, allscore = 0;
for (int i = 0; i < 10000; i++) }
cout << max << " " << allscore;
return 0;
}
1032 挖掘機技術哪家強 20
為了用事實說明挖掘機技術到底哪家強,pat組織了一場挖掘機技能大賽。現請你根據比賽結果統計出技術最強的那個學校。輸入格式 輸入在第1行給出不超過105的正整數n,即參賽人數。隨後n行,每行給出一位參賽者的資訊和成績,包括其所代表的學校的編號 從1開始連續編號 及其比賽成績 百分制 中間以空格分隔。輸...
1032 挖掘機技術哪家強 20
為了用事實說明挖掘機技術到底哪家強,pat組織了一場挖掘機技能大賽。現請你根據比賽結果統計出技術最強的那個學校。輸入格式 輸入在第1行給出不超過105的正整數n,即參賽人數。隨後n行,每行給出一位參賽者的資訊和成績,包括其所代表的學校的編號 從1開始連續編號 及其比賽成績 百分制 中間以空格分隔。輸...
1032 挖掘機技術哪家強 20
時間限制 200 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 為了用事實說明挖掘機技術到底哪家強,pat組織了一場挖掘機技能大賽。現請你根據比賽結果統計出技術最強的那個學校。輸入格式 輸入在第1行給出不超過105的正整數n,即參賽人...