傳送門
按要求,給國家進行排名。
有多組資料。
第一行給出國家數n,要求排名的國家數m,國家號從0到n-1。
第二行開始的n行給定國家或地區的奧運金牌數,獎牌數,人口數(百萬)。
接下來一行給出m個國家號。
排序有4種方式: 金牌總數 獎牌總數 金牌人口比例 獎牌人口比例
對每個國家給出最佳排名排名方式 和 最終排名
格式為: 排名:排名方式
如果有相同的最終排名,則輸出排名方式最小的那種排名,對於排名方式,金牌總數 < 獎牌總數 < 金牌人口比例 < 獎牌人口比例
如果有並列排名的情況,即如果出現金牌總數為 100,90,90,80.則排名為1,2,2,4.
每組資料後加乙個空行。
4 44 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:31:12:1
1:2
1:11:1
題意的理解, 給出n個國家和m個要排序的國家,之後的n行給出每乙個國家的金牌數,獎牌數和人口,之後再給出m個數字,代表那m個要進行排序的國家(除了這些國家之外都不需要進行排序,輸入了放**不需要進行處理)**實現就是通過乙個結構體,然後分別計算每一種排序方式,每乙個需要排序國家的數量,然後對每乙個排了序的國家的名次進行排序(下面的**中排序是很粗糙的手排,很暴力,但是寫起來很麻煩)
#include
using namespace std;
struct node
a[100];
intmain()
for(i=
0;i) node b[
100]
;for
(i=0
;i}for
(j=0
;j)for
(j=0
;j(b[i]
.medal>b[j]
.medal)
if(b[i]
.gp>b[j]
.gp)
if(b[i]
.mp>b[j]
.mp)}}
for(j=
0;j)else
if(b[j]
.no2.no1&&b[j]
.no2<=b[j]
.no3&&b[j]
.no2<=b[j]
.no4)
else
if(b[j]
.no3.no1&&b[j]
.no3.no2&&b[j]
.no3<=b[j]
.no4)
else
}for
(j=0
;j) cout
}
hdu 3789 請不要將所有國家排序
坑爹,考浙大的研究生果然都不是一般人 include stdio.h include string.h define m 100 int best m int final m int n,m int data m 3 int state m void refresh int ini,int w vo...
奧運排序問題
時間限制 1 sec 記憶體限制 32 mb 按要求,給國家進行排名。有多組資料。第一行給出國家數n,要求排名的國家數m,國家號從0到n 1。第二行開始的n行給定國家或地區的奧運金牌數,獎牌數,人口數 百萬 接下來一行給出m個國家號。排序有4種方式 金牌總數 獎牌總數 金牌人口比例 獎牌人口比例 對...
奧運排序問題
按要求,給國家進行排名。輸入描述 有多組資料。第一行給出國家數n,要求排名的國家數m,國家號從0到n 1。第二行開始的n行給定國家或地區的奧運金牌數,獎牌數,人口數 百萬 接下來一行給出m個國家號。輸出描述 排序有4種方式 金牌總數 獎牌總數 金牌人口比例 獎牌人口比例 對每個國家給出最佳排名排名方...