【HDOJ】3789 奥运排序问题

写了个函数指针,这题目很水,但是佷烦。


 1 #include <iostream>
2 #include <cstring>
3 #include <cstdio>
4 #include <cstdlib>
5 using namespace std;
6
7 #define MAXN 305
8
9 typedef struct {
10 int id, g, j;
11 float gp, jp;
12 } count_st;
13
14 typedef struct {
15 int r, id;
16 } rank_st;
17
18 count_st counts[MAXN], buf[MAXN];
19 rank_st rank[4][MAXN];
20 int ids[MAXN];
21 int n, m;
22
23 int compg(const void *a, const void *b) {
24 return ((count_st *)b)->g - ((count_st *)a)->g;
25 }
26
27 int compj(const void *a, const void *b) {
28 return ((count_st *)b)->j - ((count_st *)a)->j;
29 }
30
31 int compgp(const void *a, const void *b) {
32 return ((count_st *)b)->gp>((count_st *)a)->gp ? 1:-1;
33 }
34
35 int compjp(const void *a, const void *b) {
36 return ((count_st *)b)->jp>((count_st *)a)->jp ? 1:-1;
37 }
38
39 void f(rank_st *a, int sel, int (*cmp)(const void*, const void *)) {
40 int i, j;
41 qsort(counts, m, sizeof(count_st), cmp);
42 for (i=0, j=0; i<m; ++i) {
43 if (sel == 0)
44 if (i && counts[i].g != counts[i-1].g)
45 j = i;
46 if (sel == 1)
47 if (i && counts[i].j != counts[i-1].j)
48 j = i;
49 if (sel == 2)
50 if (i && counts[i].gp != counts[i-1].gp)
51 j = i;
52 if (sel == 3)
53 if (i && counts[i].jp != counts[i-1].jp)
54 j = i;
55 (a+i)->id = counts[i].id;
56 (a+i)->r = j;
57 }
58 }
59
60 int main() {
61 int i, j, k, v, min;
62 float dp;
63
64 while (scanf("%d %d",&n,&m) != EOF) {
65 for (i=0; i<n; ++i) {
66 buf[i].id = i;
67 scanf("%d %d %f", &buf[i].g, &buf[i].j, &dp);
68 buf[i].gp = buf[i].g / dp;
69 buf[i].jp = buf[i].j / dp;
70 }
71 for (i=0; i<m; ++i) {
72 scanf("%d", &j);
73 counts[i] = buf[j];
74 ids[i] = j;
75 }
76 f(rank[0], 0, &compg);
77 f(rank[1], 1, &compj);
78 f(rank[2], 2, &compgp);
79 f(rank[3], 3, &compjp);
80 for (i=0; i<m; ++i) {
81 min = MAXN;
82 for (j=0; j<4; ++j) {
83 for (k=0; k<m; ++k) {
84 if (rank[j][k].id == ids[i]) {
85 if (rank[j][k].r < min) {
86 v = j;
87 min = rank[j][k].r;
88 }
89 break;
90 }
91 }
92 }
93 printf("%d:%d\n",min+1,v+1);
94 }
95 printf("\n");
96 }
97
98 return 0;
99 }

【HDOJ】3789 奥运排序问题,布布扣,bubuko.com

时间: 2024-12-16 00:48:14

【HDOJ】3789 奥运排序问题的相关文章

九度oj 题目1007:奥运排序问题

九度oj 题目1007:奥运排序问题   恢复 题目描述: 按要求,给国家进行排名. 输入:                        有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号从0到N-1. 第二行开始的N行给定国家或地区的奥运金牌数,奖牌数,人口数(百万). 接下来一行给出M个国家号. 输出:                        排序有4种方式: 金牌总数 奖牌总数 金牌人口比例 奖牌人口比例 对每个国家给出最佳排名排名方式 和 最终排名 格式为: 排名:排名

题目1007:奥运排序问题(自定义排序问题)

题目链接:http://ac.jobdu.com/problem.php?pid=1007 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: // // 1007 奥运排序问题.cpp // Jobdu // // Created by PengFei_Zheng on 28/04/2017. // Copyright © 2017 PengFei_Zheng. All rights reserved. // #include <std

题目1007:奥运排序问题

题目描述: 按要求,给国家进行排名. 输入: 有多组数据.第一行给出国家数N,要求排名的国家数M,国家号从0到N-1.第二行开始的N行给定国家或地区的奥运金牌数,奖牌数,人口数(百万).接下来一行给出M个国家号. 输出: 排序有4种方式: 金牌总数 奖牌总数 金牌人口比例 奖牌人口比例 对每个国家给出最佳排名排名方式 和 最终排名格式为: 排名:排名方式如果有相同的最终排名,则输出排名方式最小的那种排名,对于排名方式,金牌总数 < 奖牌总数 < 金牌人口比例 < 奖牌人口比例 如果有并列

浙江大学研究生机试题——奥运排序问题

分明是一道水题!!完全没有算法,模拟即可. 然而在做这道题时无意中复习了一下关于函数对象的知识,所以这道题还是有意义的,另外对于C++不熟悉的话, 写起来会比较烦. 题目描述: 按要求,给国家进行排名. 输入: 有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号从0到N-1. 第二行开始的N行给定国家或地区的奥运金牌数,奖牌数,人口数(百万). 接下来一行给出M个国家号. 输出: 排序有4种方式: 金牌总数 奖牌总数 金牌人口比例 奖牌人口比例 对每个国家给出最佳排名排名方式 和 最终

奥运排序问题 分数:2

时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:62 解决:31 标签 排序 题目描述 按要求,给国家进行排名. 输入格式 有多组数据.第一行给出国家数N,要求排名的国家数M,国家号从0到N-1.第二行开始的N行给定国家或地区的奥运金牌数,奖牌数,人口数(百万).接下来一行给出M个国家号. 输出 排序有4种方式: 金牌总数 奖牌总数 金牌人口比例 奖牌人口比例 对每个国家给出最佳排名排名方式 和 最终排名格式为: 排名:排名方式如果有相同的最终排名,则输出排名方式最小的那种排名,对于排

题目1007:奥运排序问题(结构体排序)

题目链接:http://ac.jobdu.com/problem.php?pid=1007 详解连接:https://github.com/Pacsiy/JobDu 参考代码: // // Created by AlvinZH on 2017/4/29. // Copyright (c) AlvinZH. All rights reserved. // #include <iostream> #include <vector> #include <cstdio> #in

线程池中的线程的排序问题

1 package org.zln.thread.poolqueue; 2 3 import org.slf4j.Logger; 4 import org.slf4j.LoggerFactory; 5 6 import java.util.Comparator; 7 import java.util.UUID; 8 import java.util.concurrent.*; 9 10 /** 11 * 线程池中的线程的排序问题 12 * Created by sherry on 16/11/4

【HDOJ】4328 Cut the cake

将原问题转化为求完全由1组成的最大子矩阵.挺经典的通过dp将n^3转化为n^2. 1 /* 4328 */ 2 #include <iostream> 3 #include <sstream> 4 #include <string> 5 #include <map> 6 #include <queue> 7 #include <set> 8 #include <stack> 9 #include <vector>

POJ Xiangqi 4001 &amp;&amp; HDOJ 4121 Xiangqi

题目链接(POJ):http://poj.org/problem?id=4001 题目链接(HDOJ):http://acm.hdu.edu.cn/showproblem.php?pid=4121 Xiangqi Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1108   Accepted: 299 Description Xiangqi is one of the most popular two-player boa