在某次競賽中,判題規(guī)則是按解題數(shù)從多到少排序,在解題數(shù)相同的情況下,按總成績(保證各不相同)從高到低排序,取排名前60%的參賽隊(四舍五入取整)獲獎,請確定某個隊能否獲獎。
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供瀘州網(wǎng)站建設(shè)、瀘州做網(wǎng)站、瀘州網(wǎng)站設(shè)計、瀘州網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、瀘州企業(yè)網(wǎng)站模板建站服務(wù),10多年瀘州做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。輸入格式:首先輸入一個正整數(shù)T,表示測試數(shù)據(jù)的組數(shù),然后是T組測試數(shù)據(jù)。每組測試的第一行輸入1個整數(shù)n(1≤n≤15)和1個字符串ms(長度小于10且不含空格),分別表示參賽隊伍總數(shù)和想確定是否能獲獎的某個隊名;接下來的n行輸入n個隊的解題信息,每行一個1個字符串s(長度小于10且不含空格)和2個整數(shù)m,g(0≤m≤10,0≤g≤100),分別表示一個隊的隊名、解題數(shù)、成績。當(dāng)然,n個隊名中肯定包含ms。
輸出格式:對于每組測試,若某隊能獲獎,則輸出“YES”,否則輸出“NO”。引號不必輸出。
輸入樣例:1
3 team001
team001 2 27
team002 2 28
team003 0 7
輸出樣例:YES
來源:[1] 黃龍軍, 等. 大學(xué)生程序設(shè)計競賽入門—C/C++程序設(shè)計(微課視頻版), 北京:清華大學(xué)出版社, 2020.11. ISBN:9787302564744
[2] 黃龍軍.程序設(shè)計競賽入門(Python版),北京:清華大學(xué)出版社,2021.4. ISBN:9787302571230
我的想法是用快排來做,這題不難
#include#includetypedef struct paimin
{
char name[11];
int jt, fs;
} pm;
int cmp(void const *a, void const *b)//這是快排cmp函數(shù)的固定格式不能更改,所以函數(shù)內(nèi)引用結(jié)構(gòu)體的時候需要強轉(zhuǎn)
{
if (((pm *)a)->jt - ((pm *)b)->jt)
return ((pm *)a)->jt< ((pm *)b)->jt ? 1 : -1;
else
return ((pm *)a)->fs< ((pm *)b)->fs ? 1 : -1;
}
int main()
{
char ms[11];
int N, n, i;
scanf("%d", &N);
while (N--)
{
scanf("%d%s\n", &n, ms);//這里用\n接收掉第一行的回車避免后面輸入臟數(shù)據(jù)
pm s[15];
for (i = 0; i< n; i++)
scanf("%s%d%d", s[i].name, &s[i].jt, &s[i].fs);
qsort(s, n, sizeof(pm), cmp);//快排的調(diào)用
n = (n * 0.6)-(int)(n * 0.6)>0.5?(int)(n * 0.6)+1:(int)(n * 0.6);//四舍五入的大概原理就是判斷這個實數(shù)的小數(shù)部分是否>0.5是則強轉(zhuǎn)int并+1不是則強轉(zhuǎn)int輸出
for (i = 0; i< n; i++)//通過上面n*0.6獲得n個數(shù)排序以后前60%個數(shù),并從中遍歷如果發(fā)現(xiàn)與ms相同的隊名則證明ms可以獲獎
if (!strcmp(s[i].name, ms))
break;
if (i< n)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧