2010 浙大機試 奧運排序問題

2021-08-04 22:12:26 字數 2001 閱讀 4724

題目1007:奧運排序問題

時間限制:1 秒

記憶體限制:32 兆

特殊判題:

提交:9450

解決:2044

題目描述:按要求,給國家進行排名。

輸入:有多組資料。

第一行給出國家數n,要求排名的國家數m,國家號從0到n-1。

第二行開始的n行給定國家或地區的奧運金牌數,獎牌數,人口數(百萬)。

接下來一行給出m個國家號。

輸出:排序有4種方式: 金牌總數 獎牌總數 金牌人口比例 獎牌人口比例

對每個國家給出最佳排名排名方式 和 最終排名

格式為: 排名:排名方式

如果有相同的最終排名,則輸出排名方式最小的那種排名,對於排名方式,金牌總數 < 獎牌總數 < 金牌人口比例 < 獎牌人口比例

如果有並列排名的情況,即如果出現金牌總數為 100,90,90,80.則排名為1,2,2,4.

每組資料後加乙個空行。

樣例輸入:

4 4

4 8 1

6 6 2

4 8 2

2 12 4

0 1 2 3

4 28 10 1

8 11 2

8 12 3

8 13 4

0 3

樣例輸出:

1:3

1:12:1

1:21:1

1:1

2023年浙江大學計算機及軟體工程研究生機試真題

答疑:

** :[注]使用了函式指標和函式指標陣列

#include #include using namespace std;

const int inf(0x7fffffff);

struct best_rank

best_rank(int r, int w)

};inline bool operator < (const best_rank &one, const best_rank &another)

return one.way < another.way;

}struct nation;

int n, m;

const int maxn(1e5 + 10);

nation all_nations[maxn];

nation nations[maxn];

bool cmp1(nation one, nation another)

bool cmp2(nation one, nation another)

bool c***(nation one, nation another)

bool cmp4(nation one, nation another)

bool cmp5(nation one, nation another)

void update(int way, bool (*cmp)(nation one, nation another))

for(int i = 1; i < m; i++)

else

}}int main()

int index;

for(int i = 0; i < m; i++)

bool (*cmp[4])(nation one, nation another) = ;

for(int i = 0; i < 4; i++)

sort(nations, nations + m, cmp5);

for(int i = 0; i < m; i++)

puts("");

}return 0;

}

王道機試 排序 奧運排序問題 浙江大學

這絕對是我寫過邏輯最複雜的乙個題目,主要注意並列排序函式,另外由於獎牌人口比和金牌人口比,涉及到除法,而這乙個題目又嚴格要求排序,所以最後想的辦法是用浮點數來儲存。原本想將四個並列排序函式整合整乙個,但由於我用的是結構體儲存排序結構,而非陣列,並沒有想到很好的整合方式。雖然看上去 龐大,但是邏輯清晰...

36 奧運排序問題 浙大複試 c

按要求,給國家進行排名。有多組資料。第一行給出國家數n,要求排名的國家數m,國家號從0到n 1。第二行開始的n行給定國家或地區的奧運金牌數,獎牌數,人口數 百萬 接下來一行給出m個國家號。排序有4種方式 金牌總數 獎牌總數 金牌人口比例 獎牌人口比例 對每個國家給出最佳排名排名方式 和 最終排名 格...

2010北航機試

均為自做 1.題目描述 利用泰勒公式求cos x 1 x2 2 x4 4 include include include double jiecheng int k return result int main while temp 1e 6 printf lf n result return0 2...