写了个函数指针,这题目很水,但是佷烦。
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