hdu3789/九度OJ1007 奥运排序问题
来源:互联网 发布:ubuntu 16.04 ip设置 编辑:程序博客网 时间:2024/05/01 12:59
- 题目描述:
按要求,给国家进行排名。
- 输入:
- 有多组数据。
第一行给出国家数N,要求排名的国家数M,国家号从0到N-1。
第二行开始的N行给定国家或地区的奥运金牌数,奖牌数,人口数(百万)。
接下来一行给出M个国家号。
- 输出:
- 排序有4种方式: 金牌总数 奖牌总数 金牌人口比例 奖牌人口比例
对每个国家给出最佳排名排名方式 和 最终排名
格式为: 排名:排名方式
如果有相同的最终排名,则输出排名方式最小的那种排名,对于排名方式,金牌总数 < 奖牌总数 < 金牌人口比例 < 奖牌人口比例
如果有并列排名的情况,即如果出现金牌总数为 100,90,90,80.则排名为1,2,2,4.
每组数据后加一个空行。
中文题,题意理解起来没什么问题。但是!!这个题特别坑!我在WA了六发之后,坚信代码没有bug了,就重新回去读题,终于发现trick:只需要对M个国家进行排名,而不是全部国家进行排名。
感觉题目出成这样完全没有意义嘛,在给的样例中根本看不出这一点,题目就像是文字游戏。。
要/求排名的/国家数M要求/排名的/国家数M
按照AC的代码来看就是后者的断句。。我纯属WA的太多想吐槽一下
#include <iostream>#include <algorithm>using namespace std;const int size = 1005;class Country{public:double g, j, p;int id;}c[size];bool cmpg(Country x, Country y){return x.g > y.g;}bool cmpj(Country x, Country y){return x.j > y.j;}bool cmpgp(Country x, Country y){return x.g / x.p > y.g / y.p;}bool cmpjp(Country x, Country y){return x.j / x.p > y.j / y.p;}int main(){int n, m;int need[size];int rank[size][5];while (cin >> n >> m){for (int i = 0; i < n; i++){cin >> c[i].g >> c[i].j >> c[i].p;c[i].id = i;}for (int i = 0; i < m; i++){cin >> need[i];}sort(c, c + n, cmpg);rank[c[0].id][1] = 1;for (int i = 1; i < n; i++){if (c[i].g == c[i - 1].g)rank[c[i].id][1] = rank[c[i - 1].id][1];elserank[c[i].id][1] = i + 1;}sort(c, c + n, cmpj);rank[c[0].id][2] = 1;for (int i = 1; i < n; i++){if (c[i].j == c[i - 1].j)rank[c[i].id][2] = rank[c[i - 1].id][2];elserank[c[i].id][2] = i + 1;}sort(c, c + n, cmpgp);rank[c[0].id][3] = 1;for (int i = 1; i < n; i++){if (c[i].g / c[i].p == c[i - 1].g / c[i - 1].p)rank[c[i].id][3] = rank[c[i - 1].id][3];elserank[c[i].id][3] = i + 1;}sort(c, c + n, cmpjp);rank[c[0].id][4] = 1;for (int i = 1; i < n; i++){if (c[i].j / c[i].p == c[i - 1].j / c[i - 1].p)rank[c[i].id][4] = rank[c[i - 1].id][4];elserank[c[i].id][4] = i + 1;}for (int i = 0; i < m; i++){int min = n + 1, type = 5;for (int t = 1; t <= 4; t++){int tmp = 1;for (int j = 0; j < m; j++){if (i != j){if (rank[need[i]][t] > rank[need[j]][t]){tmp++;}}}if (min > tmp){min = tmp;type = t;}}cout << min << ":" << type << endl;}cout << endl;}}
0 0
- hdu3789/九度OJ1007 奥运排序问题
- hdu3789之奥运排序
- 九度 1007 奥运排序问题
- 【九度】题目1007:奥运排序问题
- 九度OJ 1007 奥运排序问题
- 九度 题目1007:奥运排序问题
- 九度OJ--1007-奥运排序问题
- 九度OJ 1007 奥运排序问题
- 九度OJ-1007:奥运排序问题
- 九度1007:奥运排序问题
- 九度题目1007:奥运排序问题
- 九度[1007]-奥运排序问题
- 九度OJ 1007:奥运排序问题 (排序)
- 九度oj 题目1007:奥运排序问题
- 九度OJ 题目1007:奥运排序问题
- 九度OJ 题目1007:奥运排序问题
- 九度oj 题目1007:奥运排序问题
- 九度:1007<排序><奥运排序>
- 贪心算法(上)
- YTU:复制字符串
- ViewPager 详解(三)---PagerTabStrip与PagerTitleStrip添加标题栏的异同
- 浅谈MySQL存储引擎选择 InnoDB还是MyISAM
- iOS颜色渐变
- hdu3789/九度OJ1007 奥运排序问题
- 推广必须要做的9种方法【SEO】
- C++ 命名空间(namespace)
- HttpClient的get请求
- windows 6(64位)+VMware(10.0)如何在虚拟机上安装苹果操作系统
- kafka相关配置问题
- CocoaPods详解之----进阶篇
- 未来的你才是时间的新欢
- 经典_STM32_ADC多通道采样的例子