日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

奥运排序问题

發(fā)布時(shí)間:2024/4/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 奥运排序问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目描述:

按要求,給國(guó)家進(jìn)行排名。

輸入:
有多組數(shù)據(jù)。
第一行給出國(guó)家數(shù)N,要求排名的國(guó)家數(shù)M,國(guó)家號(hào)從0到N-1。
第二行開始的N行給定國(guó)家或地區(qū)的奧運(yùn)金牌數(shù),獎(jiǎng)牌數(shù),人口數(shù)(百萬(wàn))。
接下來(lái)一行給出M個(gè)國(guó)家號(hào)。
輸出:
排序有4種方式: 金牌總數(shù) 獎(jiǎng)牌總數(shù) 金牌人口比例 獎(jiǎng)牌人口比例
對(duì)每個(gè)國(guó)家給出最佳排名排名方式 和 最終排名
格式為: 排名:排名方式
如果有相同的最終排名,則輸出排名方式最小的那種排名,對(duì)于排名方式,金牌總數(shù) < 獎(jiǎng)牌總數(shù) < 金牌人口比例 < 獎(jiǎng)牌人口比例
如果有并列排名的情況,即如果出現(xiàn)金牌總數(shù)為 100,90,90,80.則排名為1,2,2,4.
每組數(shù)據(jù)后加一個(gè)空行。
樣例輸入:
4 4 4 8 1 6 6 2 4 8 2 2 12 4 0 1 2 3 4 2 8 10 1 8 11 2 8 12 3 8 13 4 0 3
樣例輸出:
1:3 1:1 2:1 1:21:1 1:1

1 #include <cstdlib> 2 #include <cstdio> 3 #include <cmath> 4 #include <cstring> 5 #include <cctype> 6 7 #include <iostream> 8 #include <string> 9 #include <vector> 10 #include <list> 11 #include <deque> 12 #include <set> 13 #include <map> 14 #include <stack> 15 #include <queue> 16 #include <algorithm> 17 18 #define MAXN 100001 19 #define MAXD 99999999 20 using namespace std; 21 22 23 struct Re{ 24 int id; 25 int gn; 26 int an; 27 int rn; 28 double avgn; 29 double avan; 30 }; 31 32 vector<Re>vt1,vt2; 33 34 35 int vv[1000]; 36 37 38 bool cmp1(Re x,Re y) 39 { 40 if(x.gn>y.gn) 41 return true; 42 return false; 43 } 44 45 46 bool cmp2(Re x,Re y) 47 { 48 if(x.an>y.an) 49 return true; 50 return false; 51 } 52 53 54 bool cmp3(Re x,Re y) 55 { 56 if(x.avgn>y.avgn) 57 return true; 58 return false; 59 } 60 61 62 bool cmp4(Re x,Re y) 63 { 64 if(x.avan>y.avan) 65 return true; 66 67 return false; 68 } 69 70 71 72 73 74 int main() 75 { 76 77 int n,m; 78 79 int i,j,k; 80 81 82 while(scanf("%d%d",&n,&m)!=EOF) 83 { 84 vt1.clear(); 85 vt2.clear(); 86 87 for(i=0;i<n;i++) 88 { 89 Re ans; 90 91 scanf("%d%d%d",&ans.gn,&ans.an,&ans.rn); 92 93 ans.id=i; 94 ans.avan=ans.an*1.0/ans.rn; 95 ans.avgn=ans.gn*1.0/ans.rn; 96 97 98 99 vt1.push_back(ans); 100 } 101 102 103 104 for(i=0;i<m;i++) 105 { 106 int v; 107 108 scanf("%d",&v); 109 110 vv[i]=v; 111 112 vt2.push_back(vt1[v]); 113 } 114 115 116 for(i=0;i<m;i++) 117 { 118 int v=vv[i]; 119 120 int rk; 121 int ty; 122 123 124 sort(vt2.begin(),vt2.end(),cmp1); 125 126 for(j=0;j<vt2.size();j++) 127 { 128 if(vt2[j].id==v) 129 {break;} 130 } 131 132 for(k=j-1;k>=0;k--) 133 { 134 if(vt2[k].gn!=vt2[j].gn) 135 {break;} 136 } 137 138 139 140 141 k++; 142 rk=k; 143 ty=1; 144 145 146 147 148 sort(vt2.begin(),vt2.end(),cmp2); 149 150 for(j=0;j<vt2.size();j++) 151 { 152 if(vt2[j].id==v) 153 {break;} 154 } 155 156 for(k=j-1;k>=0;k--) 157 { 158 if(vt2[k].an!=vt2[j].an) 159 {break;} 160 } 161 162 163 k++; 164 165 if(k<rk) 166 { 167 rk=k; 168 ty=2; 169 } 170 171 172 173 174 175 176 sort(vt2.begin(),vt2.end(),cmp3); 177 178 for(j=0;j<vt2.size();j++) 179 { 180 if(vt2[j].id==v) 181 {break;} 182 } 183 184 for(k=j-1;k>=0;k--) 185 { 186 if(vt2[k].avgn!=vt2[j].avgn) 187 {break;} 188 } 189 190 191 k++; 192 193 if(k<rk) 194 { 195 rk=k; 196 ty=3; 197 } 198 199 200 201 202 203 204 sort(vt2.begin(),vt2.end(),cmp4); 205 206 for(j=0;j<vt2.size();j++) 207 { 208 if(vt2[j].id==v) 209 {break;} 210 } 211 212 for(k=j-1;k>=0;k--) 213 { 214 if(vt2[k].avan!=vt2[j].avan) 215 {break;} 216 } 217 218 219 k++; 220 221 if(k<rk) 222 { 223 rk=k; 224 ty=4; 225 } 226 227 228 229 230 231 232 cout<<rk+1<<":"<<ty<<endl; 233 234 235 236 } 237 cout<<endl; 238 } 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 return 0; 261 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/zjushuiping/archive/2012/05/31/2527946.html

總結(jié)

以上是生活随笔為你收集整理的奥运排序问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。