為了用事實說明挖掘機技術到底哪家強,pat 組織了一場挖掘機技能大賽。現請你根據比賽結果統計出技術最強的那個學校。
輸入格式:
輸入在第 1 行給出不超過 105 的正整數 n,即參賽人數。
隨後 n 行,每行給出一位參賽者的資訊和成績,包括其所代表的學校的編號(從 1 開始連續編號)、及其比賽成績(百分制),中間以空格分隔。
輸出格式:
在一行中給出總得分最高的學校的編號、及其總分,中間以空格分隔。題目保證答案唯一,沒有並列。
輸入樣例:
63 65
2 80
1 100
2 70
3 40
3 0輸出樣例:
2 150
方法一.
思路:建立乙個player結構體,結構體同時包括編號和成績。輸入每個人的比編號成績的同時,巢狀for迴圈從頭遍歷陣列,找到和此次輸入編號一樣的則把這次輸入成績加到前面去,最後利用sort從大到小排序,最後直接輸出開頭的就行了。但是這個做法最後乙個測試點會超時!#include
#include
using
namespace std;
struct player
;//結構體
bool
cmp(player a,player b)
intmain()
; cin >> n;
for(
int i =
0; i < n; i++)}
}sort
(attend,attend + n,cmp)
; cout << attend[0]
.num <<
" "<< attend[0]
.grade
}
方法二.
思路:上一題的優化做法,為了不超時直接不用巢狀for迴圈。這次用了兩個sort排序,第一次的排序是為了將編號相同的放在一起,然後用乙個for迴圈將編號相同的成績都加在一起。第二個排序是為了將加好的成績按從大到小排。最後輸出陣列第乙個編號和成績。這個**可以ac。#include
#include
using
namespace std;
struct player
;bool
cmp1
(player a,player b)
bool
cmp2
(player a,player b)
intmain()
; cin >> n;
for(
int i =
0; i < n; i++
)sort
(attend,attend + n,cmp2)
;for
(int i =
0,j =
1; j < n;
)//這個for迴圈將編號相同的成績加在一起
else
++j;
}sort
(attend,attend + n,cmp1)
; cout << attend[0]
.num <<
" "<< attend[0]
.grade
}
方法三.
柳神的做法,感覺比我的更簡單易懂,好像我寫的太複雜了…貼上**
思路:大致思路是直接輸入編號和分數,然後陣列下標就是輸入的編號,題目說是從1開始,所以不用擔心下標間斷,然後用乙個for迴圈直接從陣列裡找最大的數輸出…柳神nb!#include
#include
using
namespace std;
intmain()
int val = a[1]
, t =1;
//題目要求從1開始
for(
int i =
2; i <= n; i++
)//這個for迴圈找出陣列中分數最大的數和其編號
} cout << t <<
" "<< val
}
PAT 乙級 1032 挖掘機技術哪家強
1.題目描述 為了用事實說明挖掘機技術到底哪家強,pat組織了一場挖掘機技能大賽。現請你根據比賽結果統計出技術最強的那個學校。輸入格式 輸入在第1行給出不超過105的正整數n,即參賽人數。隨後n行,每行給出一位參賽者的資訊和成績,包括其所代表的學校的編號 從1開始連續編號 及其比賽成績 百分制 中間...
PAT 乙級 1032 挖掘機技術哪家強
時間限制 200 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 為了用事實說明挖掘機技術到底哪家強,pat組織了一場挖掘機技能大賽。現請你根據比賽結果統計出技術最強的那個學校。輸入格式 輸入在第1行給出不超過105的正整數n,即參賽人...
PAT 乙級 1032 挖掘機技術哪家強
時間限制 200 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 為了用事實說明挖掘機技術到底哪家強,pat組織了一場挖掘機技能大賽。現請你根據比賽結果統計出技術最強的那個學校。輸入格式 輸入在第1行給出不超過105的正整數n,即參賽人...