程式設計思維作業和實驗使用的實**測系統,具有及時獲得成績排名的特點,那它的功能是怎麼實現的呢?
我們千辛萬苦懟完了不忍直視的程式並提交以後,評測系統要麼返回ac,要麼是返回各種其他的錯誤,不論是怎樣的錯法,它總會給你記上一筆,表明你曾經在這兒被坑過,而當你歷經千辛終將它ac之後,它便會和你算筆總賬,表明這題共錯誤提交了幾次。
在歲月的長河中,你通過的題數雖然越來越多,但通過每題時你所共花去的時間(從最開始算起,直至通過題目時的這段時間)都會被記錄下來,作為你曾經奮鬥的痕跡。特別的,對於你通過的題目,你曾經的關於這題的每次錯誤提交都會被算上一定的單位時間罰時,這樣一來,你在做出的題數上,可能領先別人很多,但是在做出同樣題數的人中,你可能會因為罰時過高而處於排名上的劣勢。
例如某次考試一共八道題(a,b,c,d,e,f,g,h),每個人做的題都在對應的題號下有個數量標記,負數表示該學生在該題上有過的錯誤提交次數但到現在還沒有ac,正數表示ac所耗的時間,如果正數a跟上了一對括號,裡面有個正數b,則表示該學生ac了這道題,耗去了時間a,同時曾經錯誤提交了b次。例子可見下方的樣例輸入與輸出部分。
輸入資料報含多行,第一行是共有的題數n(1≤n≤12)以及單位罰時m(10≤m≤20),之後的每行資料描述乙個學生的資訊,首先是學生的使用者名稱(不多於10個字元的字串)其次是所有n道題的得分現狀,其描述採用問題描述中的數量標記的格式,見上面的**。
根據這些學生的得分現狀,輸出乙個實時排名。實時排名顯然先按ac題數的多少排,多的在前,再按時間分的多少排,少的在前,如果湊巧前兩者都相等,則按名字的字典序排,小的在前。每個學生佔一行,輸出名字(10個字元寬),做出的題數(2個字元寬,右對齊)和時間分(4個字元寬,右對齊)。名字、題數和時間分相互之間有乙個空格。資料保證可按要求的輸出格式進行輸出。
8
20gugudong 96-3
40(3)
001-
80hrz 10767-
30082
00tt 120(3
)3010(
1)-3
04721(
2)-2
omrailgun 0-99
-80-
666-
100860-
9999996
yjq -237
(2)13
-10113(2
)79(1
)-1zjm 0057
(5)0
099(3
)-70
tt 5
348yjq 4
342gugudong 3
197hrz 3
256zjm 2
316omrailgun 0
0
首先從輸入的資料中分離出name和得分情況。
然後判斷得分情況,對於第乙個字元不為'0'
或者'-'
的算最後的成績,並記入做出來的題數。
計算過程:將前面整數部分相加,括號裡面的數字乘罰時後在相加得出最後的總時間。
建立資料結構儲存每個人的姓名,成績,以及時間,為後面的排序輸出做準備。
分割讀取的一行字串,儲存成字串陣列,然後逐個判斷,第乙個為姓名,後面為做題情況,依次判斷第乙個字元,來確定是否加入計算最後的總時間以及做出的題數。
對於成功做出的題的時間分為兩部分,前面的時間,以後括號裡的罰時,需要相加。
#include
#include
#include
#include
#include
#include
using
namespace std;
string str[20]
;//讀取 每乙個人的得分情況 一行乙個
struct score};
score ans[
10000];
//儲存每個人的成績
void
cal_time
(string& t,
int& time,
int& m)
} time = time + a;
//加入總時間
a =0;
for(
int i = b +
1; i < t.
length()
-1; i++)}
time = time + a * m;
//罰時係數乘以罰時 加入總時間
}else
} time = time + a;}}
void
cal(string str,
int x,
int& m,
int& count)
} ans[count]
.num = c;
//做題數
}void
sort
(int
& count)
}int
main()
}sort
(count)
;return0;
}
這道題剛開始錯了好幾遍,以為是函式錯了,後來發現不是函式錯了,而是讀入錯誤,讀入資料如果用scanf()函式讀取,遇到乙個"空格" 時前面的算乙個字串,然後跳過這個"空格"繼續讀,發現每個資料之間不是空格,而且每個資料間的"空格"不是固定大小,所以採用cin讀入。(其實是我太菜了,scanf()用的不夠好!!!)。 1 3 6 考試排名 hdu
c 程式設計考試使用的實時提交系統,具有即時獲得成績排名的特點。它的功能是怎麼實現的呢?我們做好了題目的解答,提交之後,要麼 ac 要麼錯誤,不管怎樣錯法,總是給你記上一筆,表明你曾經有過一次錯誤提交,因而當你一旦提交該題 ac 後,就要與你算一算帳了,總共該題錯誤提交了幾回。雖然你在題數上,大步地...
基礎93 考試排名
93 考試排名 問題描述 c 程式設計考試使用的實時提交系統,具有即時獲得成績排名的特點。它的功能是怎麼實現的呢?我們做好了題目的解答,提交之後,要麼 ac 要麼錯誤,不管怎樣錯法,總是給你記上一筆,表明你曾經有過一次錯誤提交,因而當你一旦提交該題 ac 後,就要與你算一算帳了,總共該題錯誤提交了幾...
HDU 2093 考試排名
problem description c 程式設計考試使用的實時提交系統,具有即時獲得成績排名的特點。它的功能是怎麼實現的呢?我們做好了題目的解答,提交之後,要麼 ac 要麼錯誤,不管怎樣錯法,總是給你記上一筆,表明你曾經有過一次錯誤提交,因而當你一旦提交該題 ac 後,就要與你算一算帳了,總共該...