九度 1007
来源:互联网 发布:怎么增强JS的兼容性 编辑:程序博客网 时间:2024/06/05 18:10
关于这道题目学会了以下几件事:
1:sort函数第三个参数cmp函数可以指定第三个参数,以此来判断排序方式;
2:看清题目,题目的意思是只排序要求排序的国家;
3:偷懒绝对是好事,我就是不想写很多个cmp才去查是不是能用第三个参数指定排序方式
about:cmp
想要指定cmp的第三个参数,可以重载函数调用运算符,然后就可以愉快的编程了。
贴代码,,,
#include<iostream>#include<algorithm>#include<cstdio>using namespace std;enum Enumcomp{GOLD,MEDAL,GOLD_PEOPLE,MEDAL_PEOPLE,NUMBLE};//在sort数组里下标代表排名方式,1,2,3,4struct Country{int gold;int medal;int people;double gold_people;double medal_people;int _sort[5];int number;};class cmp { private: Enumcomp comp; public: cmp(Enumcomp c):comp(c){}; bool operator ()(struct Country a,struct Country b) { switch(comp){ case GOLD: return a.gold > b.gold; case MEDAL: return a.medal > b.medal; case GOLD_PEOPLE: return a.gold_people > b.gold_people; case MEDAL_PEOPLE: return a.medal_people > b.medal_people; case NUMBLE: return a.number < b.number; } } };int main(){int m,n;while((scanf("%d%d",&n,&m))!=EOF){struct Country country1[n],country[n];int flag=0;//输入数据for(int i=0;i<n;i++){scanf("%d%d%d",&country1[i].gold,&country1[i].medal,&country1[i].people);country1[i].gold_people=((double)(country1[i].gold))/country1[i].people;country1[i].medal_people=((double)(country1[i].medal))/country1[i].people;for(int j=0;j<5;j++){country1[i]._sort[j]=100;country[i]._sort[j]=100;}country1[i].number=i;}for(int i=0;i<m;i++){int choice;scanf("%d",&choice);country[flag].gold=country1[choice].gold;country[flag].medal=country1[choice].medal;country[flag].people=country1[choice].people;country[flag].gold_people=country1[choice].gold_people;country[flag].medal_people=country1[choice].medal_people;country[flag].number=country1[choice].number;flag++;}//gold 排序sort(country,country+flag,cmp(GOLD));country[0]._sort[1]=1;for(int i=1;i<flag;i++){ if(country[i].gold==country[i-1].gold) country[i]._sort[1]=country[i-1]._sort[1]; else country[i]._sort[1]=i+1;}//medal排序sort(country,country+flag,cmp(MEDAL));country[0]._sort[2]=1;for(int i=1;i<flag;i++){ if(country[i].medal==country[i-1].medal) country[i]._sort[2]=country[i-1]._sort[2]; else country[i]._sort[2]=i+1;}//gold_ppeople排序sort(country,country+flag,cmp(GOLD_PEOPLE));country[0]._sort[3]=1;for(int i=1;i<flag;i++){if(country[i].gold_people==country[i-1].gold_people) country[i]._sort[3]=country[i-1]._sort[3]; else country[i]._sort[3]=i+1;}//medal_people排序sort(country,country+flag,cmp(MEDAL_PEOPLE));country[0]._sort[4]=1;for(int i=1;i<flag;i++){if(country[i].medal_people==country[i-1].medal_people) country[i]._sort[4]=country[i-1]._sort[4]; else country[i]._sort[4]=i+1;}//按照国家序号重排sort(country,country+flag,cmp(NUMBLE));for(int i=0;i<flag;i++){int _min=5;int choice;for(int j=1;j<5;j++){if(_min>country[i]._sort[j]){_min=country[i]._sort[j];choice=j;}}printf("%d:%d\n",_min,choice);}cout<<endl;}return 0;}
0 0
- 九度oj 1007
- 九度 1007
- 九度 1007 奥运排序问题
- 【九度】题目1007:奥运排序问题
- 九度OJ 1007 奥运排序问题
- 九度:1007<排序><奥运排序>
- 【九度OJ】1007【计算名次】
- 九度 题目1007:奥运排序问题
- 九度OJ--1007-奥运排序问题
- 九度OJ 1007 奥运排序问题
- 九度OJ-1007:奥运排序问题
- 九度1007:奥运排序问题
- 九度题目1007:奥运排序问题
- 九度[1007]-奥运排序问题
- 【九度OJ】:九度OJ 1050
- 【九度OJ】:九度OJ 1053
- 【九度OJ】:九度OJ 1056
- 【九度OJ】:九度OJ 1059
- HTTPS原理
- 【C++】《More Effective C++》读书笔记(转载+修订)
- 1113. Integer Set Partition (25)
- 狸猫的笔试——格雷码判断
- The 11th Zhejiang Provincial Collegiate Programming Contest
- 九度 1007
- UVA 1452Jump 【约瑟夫环】
- Boostrap框架学习总结
- findChessboardCorners函数学习笔记
- 【复习笔记】 cocos2d-x 2.x 渲染特效实现 六 节点树的描边效果
- 1004
- 【脚本化文档】——DOM概览&选取文档元素
- VirtualBox虚拟机网络连接
- 2016年中国虚拟现实行业研究报告