B 爆零 大力出奇蹟

2021-10-03 11:45:18 字數 2601 閱讀 5558

程式設計思維作業和實驗使用的實**測系統,具有及時獲得成績排名的特點,那它的功能是怎麼實現的呢?

我們千辛萬苦懟完了不忍直視的程式並提交以後,評測系統要麼返回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 20

gugudong 96 -3 40(3) 0 0 1 -8 0

hrz 107 67 -3 0 0 82 0 0

tt 120(3) 30 10(1) -3 0 47 21(2) -2

omrailgun 0 -99 -8 0 -666 -10086 0 -9999996

yjq -2 37(2) 13 -1 0 113(2) 79(1) -1

zjm 0 0 57(5) 0 0 99(3) -7 0

輸出tt 5 348

yjq 4 342

gugudong 3 197

hrz 3 256

zjm 2 316

omrailgun 0 0

此題重點在於充分理解題意,並寫出比較函式,要學會用多關鍵字排序

本題的計分函式用score_count函式來實現,將分數以字串的形式讀入並傳給score_count函式,如果字串的a[0]為0或-,則返回0,否則,如果在讀入的過程中沒有遇到(,將字串轉換為整型返回,如果遇到了,將該字串拆分為兩部分,即括號外面的和括號裡面的,返回結果為括號外面的加上括號裡面的*m.多關鍵字比較函式用compare來實現,在以下結果中均返回false(1、a的分數小於b的分數 2、a的分數和b的分數相同但a的時間比b的長 3、a b的分數時間均相同,但a的姓名的字串比b的大),其他情況均返回true,排序採用的是氣泡排序。

#include

#include

#include

//#include

#include

using namespace std;

struct rank_sort

;bool compare

(rank_sort a,rank_sort b)

else

if(a.num==b.num&&a.time>b.time)

else

if(a.num==b.num&&a.time==b.time)

}return true;

}int

score_count

(char a,

int m)

char b[20]

;int neg=0;

char c[20]

;int j=0;

int show=0;

int i;

int len=

strlen

(a);

int ii=0;

int jj=0;

for(

int k=

0;k(show==1)

if(a[k]

=='(')if

(show==0)

}if(show==1)

if(show==0)

}int

main()

} rank[size]

.num=num_right;

rank[size]

.time=sum_time;

size++;}

//排序演算法

for(

int i=size;i>

0;i--)}

}//輸出

int i;

for( i=

0;i)// printf("%-10s %2d %4d",rank[i].name,rank[i].num,rank[i].time);

return0;

}

B 爆零 大力出奇蹟

問題描述 程式設計思維作業和實驗使用的實 測系統,具有及時獲得成績排名的特點,那它的功能是怎麼實現的呢?我們千辛萬苦懟完了不忍直視的程式並提交以後,評測系統要麼返回ac,要麼是返回各種其他的錯誤,不論是怎樣的錯法,它總會給你記上一筆,表明你曾經在這兒被坑過,而當你歷經千辛終將它ac之後,它便會和你算...

Week2 B 爆零 大力出奇蹟

week2 b 爆零 大力出奇蹟 程式設計思維作業和實驗使用的實 測系統,具有及時獲得成績排名的特點,那它的功能是怎麼實現的呢?我們千辛萬苦懟完了不忍直視的程式並提交以後,評測系統要麼返回ac,要麼是返回各種其他的錯誤,不論是怎樣的錯法,它總會給你記上一筆,表明你曾經在這兒被坑過,而當你歷經千辛終將...

Week2實驗B 爆零 大力出奇蹟

提交實驗使用的實 測系統,排名按多關鍵字排序,第一關鍵字為題目ac的個數,第二關鍵字為時間 包括做題時間與罰時 第三關鍵字為名字的字典序,小的在前。例如某次考試一共八道題 a,b,c,d,e,f,g,h 每個人做的題都在對應的題號下有個數量標記,負數表示該學生在該題上有過的錯誤提交次數但到現在還沒有...