1 奧運排行榜 25分

2021-10-12 21:59:09 字數 4510 閱讀 8428

每年奧運會各大**都會公布乙個排行榜,但是細心的讀者發現,不同國家的排行榜略有不同。比如中國金牌總數列第一的時候,中國**就公布「金牌榜」;而美國的獎牌總數第一,於是美國**就公布「獎牌榜」。如果人口少的國家公布乙個「國民人均獎牌榜」,說不定非洲的國家會成為榜魁…… 現在就請你寫乙個程式,對每個前來諮詢的國家按照對其最有利的方式計算它的排名。

輸入格式:

輸入的第一行給出兩個正整數n和m(≤224,因為世界上共有224個國家和地區),分別是參與排名的國家和地區的總個數、以及前來諮詢的國家的個數。為簡單起見,我們把國家從0 ~ n−1編號。之後有n行輸入,第i行給出編號為i−1的國家的金牌數、獎牌數、國民人口數(單位為百萬),數字均為[0,1000]區間內的整數,用空格分隔。最後面一行給出m個前來諮詢的國家的編號,用空格分隔。

輸出格式:

在一行裡順序輸出前來諮詢的國家的排名:計算方式編號。其排名按照對該國家最有利的方式計算;計算方式編號為:金牌榜=1,獎牌榜=2,國民人均金牌榜=3,國民人均獎牌榜=4。輸出間以空格分隔,輸出結尾不能有多餘空格。

若某國在不同排名方式下有相同名次,則輸出編號最小的計算方式。

輸入樣例:

4451

1001000

36110

3006

1432518

40012

3

輸出樣例:

1:1

1:21

:31:

4

ac碼

#include

intmain()

int contry[m]

;for

(int i=

0; i)for

(int i=

0; i)for

(int j=

0; j)for

(int j=

0; j)for

(int j=

0; j)int number=

1,min=maxgold;

if(min>maxmedal)

if(min>maxpregold)

if(min>maxpremedal)

if(p==1)

putchar

(' ');

else

p=1;

printf

("%d:%d"

,min,number);}

}

#include

#include

#include

#include

#include

#include

using

namespace std;

const

int maxn =

233;

int n, m;

struct node a[maxn]

, b[maxn]

, c[maxn]

, d[maxn]

;bool

cmp1

(node a, node b)

bool

cmp2

(node a, node b)

bool

c***

(node a, node b)

bool

cmp4

(node a, node b)

//bool c***(node a, node b)

//bool cmp4(node a, node b)

intmain()

sort

(a, a+n, cmp1)

;sort

(b, b+n, cmp2)

;sort

(c, c+n, c***)

;sort

(d, d+n, cmp4)

;for

(int i =

0; i < m;

++i)

if(j < id)

break;}

}for

(int j =

0; j < n;

++j)

if(j < id)

break;}

}for

(int j =

0; j < n;

++j)

while

(j >=

1&& c[j]

.d1 == c[j-1]

.d1) j--;if

(j < id)

break;}

}for

(int j =

0; j < n;

++j)

while

(j >=

1&& d[j]

.d2 == d[j-1]

.d2) j--;if

(j < id)

break;}

}printf

("%d:%d"

, id+

1, cc);}

return0;

}

#include

#include

#include

#include

struct jpa[

300]

;int

main()

for(i=

0;i)scanf

("%d"

,&b[i]);

for(i=

0;i)int max=p0,t=1;

//計算重要度排名為金牌,獎牌,人均金牌,人均獎牌

if(maxif(maxif(maxif(i==0)

printf

("%d:%d"

,n-max+

1,t)

;else

printf

(" %d:%d"

,n-max+

1,t)

;//n-max+1為該國家所能拿到的最高名次的排序方式

//t為此方式能夠獲得的最高的排名

}}

#include

using

namespace std;

struct node

q[230];

struct node

w[230];

//用來儲存最後的結果

int a[

230]

;int

cmp1

(node a,node b)

intcmp2

(node a,node b)

intc***

(node a,node b)

intcmp4

(node a,node b)

intmain()

sort

(q,q+n,cmp1)

;for

(int i=

0;i)sort

(q,q+n,cmp2)

;for

(int i=

0;isort

(q,q+n,c***)

;for

(int i=

0;isort

(q,q+n,cmp4)

;for

(int i=

0;ifor(

int i=

0;i)//w結構體陣列記錄每乙個編號的答案

for(

int i=

1;i<=m;i++

) cin>>a[i]

;for

(int i=

1;i)//依次對輸入的編號進行輸出即可

cout<].rank<<

":"<].way

}

#include

#include

#include

using

namespace std;

typedef

struct node

;node x[

100010];

intmain()

for(

int i =

0;i < m; i++

),p,maxx =

225,index;

scanf

("%d"

,&p)

;for

(int j =

0;j < n; j++

)for

(int j =

0;j <

4; j++)}

if(i !=0)

printf

(" ");

printf

("%d:%d"

,maxx,index);}

return0;

}

奧運排行榜(25 分)

這個題目需要注意的乙個地方就是,如果你想排序 那麼查詢就做到o 1 如果查詢用o n 那就不用排序,自己可以選擇下,做到查詢是o 1 比較麻煩需要各種對映才可以做到 每年奧運會各大 都會公布乙個排行榜,但是細心的讀者發現,不同國家的排行榜略有不同。比如中國金牌總數列第一的時候,中國 就公布 金牌榜 ...

7 53 奧運排行榜 (25 分

題目鏈結 每年奧運會各大 都會公布乙個排行榜,但是細心的讀者發現,不同國家的排行榜略有不同。比如中國金牌總數列第一的時候,中國 就公布 金牌榜 而美國的獎牌總數第一,於是美國 就公布 獎牌榜 如果人口少的國家公布乙個 國民人均獎牌榜 說不定非洲的國家會成為榜魁 現在就請你寫乙個程式,對每個前來諮詢的...

7 40 奧運排行榜 25 分

每年奧運會各大 都會公布乙個排行榜,但是細心的讀者發現,不同國家的排行榜略有不同。比如中國金牌總數列第一的時候,中國 就公布 金牌榜 而美國的獎牌總數第一,於是美國 就公布 獎牌榜 如果人口少的國家公布乙個 國民人均獎牌榜 說不定非洲的國家會成為榜魁 現在就請你寫乙個程式,對每個前來諮詢的國家按照對...