【HDOJ】3789 奥运排序问题
写了个函数指针,这题目很水,但是佷烦。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
using namespace std; #define MAXN 305 typedef struct {
int id, g, j;
float gp, jp;
} count_st; typedef struct {
int r, id;
} rank_st; count_st counts[MAXN], buf[MAXN];
rank_st rank[][MAXN];
int ids[MAXN];
int n, m; int compg(const void *a, const void *b) {
return ((count_st *)b)->g - ((count_st *)a)->g;
} int compj(const void *a, const void *b) {
return ((count_st *)b)->j - ((count_st *)a)->j;
} int compgp(const void *a, const void *b) {
return ((count_st *)b)->gp>((count_st *)a)->gp ? :-;
} int compjp(const void *a, const void *b) {
return ((count_st *)b)->jp>((count_st *)a)->jp ? :-;
} void f(rank_st *a, int sel, int (*cmp)(const void*, const void *)) {
int i, j;
qsort(counts, m, sizeof(count_st), cmp);
for (i=, j=; i<m; ++i) {
if (sel == )
if (i && counts[i].g != counts[i-].g)
j = i;
if (sel == )
if (i && counts[i].j != counts[i-].j)
j = i;
if (sel == )
if (i && counts[i].gp != counts[i-].gp)
j = i;
if (sel == )
if (i && counts[i].jp != counts[i-].jp)
j = i;
(a+i)->id = counts[i].id;
(a+i)->r = j;
}
} int main() {
int i, j, k, v, min;
float dp; while (scanf("%d %d",&n,&m) != EOF) {
for (i=; i<n; ++i) {
buf[i].id = i;
scanf("%d %d %f", &buf[i].g, &buf[i].j, &dp);
buf[i].gp = buf[i].g / dp;
buf[i].jp = buf[i].j / dp;
}
for (i=; i<m; ++i) {
scanf("%d", &j);
counts[i] = buf[j];
ids[i] = j;
}
f(rank[], , &compg);
f(rank[], , &compj);
f(rank[], , &compgp);
f(rank[], , &compjp);
for (i=; i<m; ++i) {
min = MAXN;
for (j=; j<; ++j) {
for (k=; k<m; ++k) {
if (rank[j][k].id == ids[i]) {
if (rank[j][k].r < min) {
v = j;
min = rank[j][k].r;
}
break;
}
}
}
printf("%d:%d\n",min+,v+);
}
printf("\n");
} return ;
}
【HDOJ】3789 奥运排序问题的更多相关文章
- 九度oj 题目1007:奥运排序问题
九度oj 题目1007:奥运排序问题 恢复 题目描述: 按要求,给国家进行排名. 输入: 有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号 ...
- 九度OJ 1007:奥运排序问题 (排序)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:7344 解决:1568 题目描述: 按要求,给国家进行排名. 输入: 有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号从0到N- ...
- 九度OJ做题记录 更新.....
2015年1月7日 20:34:23 题目1007:奥运排序问题 有点意思,以后想另外方法快速做出来 2015年1月7日 21:03:56 有一个技巧就是,写了三个比较函数cmp1,cmp2,cmp ...
- 题解 Sue的小球/名次排序问题/方块消除/奥运物流
Sue的小球 名次排序问题 方块消除 奥运物流 Sue的小球 题目大意 有 \(n\) 个小球在下落,初始位置 \((x_i,y_i)\),下落速度为 \(v_i\).你初始位置在 \(x_0\),速 ...
- 编程之美—烙饼排序问题(JAVA)
一.问题描述 星期五的晚上,一帮同事在希格玛大厦附近的"硬盘酒吧"多喝了几杯.程序员多喝了几杯之后谈什么呢?自然是算法问题.有个同事说:"我以前在餐 馆打工,顾 ...
- HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序
FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDOJ 2317. Nasty Hacks 模拟水题
Nasty Hacks Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- HDOJ 1326. Box of Bricks 纯水题
Box of Bricks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- 关于SQL中的排序问题
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE generatorConfiguratio ...
随机推荐
- jquery 提示信息显示后自动消失的具体实现
方法一: 复制代码 代码如下: $("#errormsg").html("您的信息输入错误,请重试!").show(300).delay(3000).hide( ...
- android - DefaultHttpClient设置超时.
Android的DefaultHttpClient中,超时设置需要调用HttpConnectionParams.setConnectionTimeout方法,如(以下代码的31~35行代码): ref ...
- Java5中的线程池实例讲解
Java5增加了新的类库并发集java.util.concurrent,该类库为并发程序提供了丰富的API多线程编程在Java 5中更加容易,灵活.本文通过一个网络服务器模型,来实践Java5的多线程 ...
- java开发规范总结_代码编码规范
规范需要平时编码过程中注意,是一个慢慢养成的好习惯 1.基本原则 强制性原则: 1.字符串的拼加操作,必须使用StringBuilder: 2.try…catch的用法 try{ }c ...
- UITabBar的隐藏
方式一: // 重写导航控制器的push方法 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL) ...
- 查看Safari和钥匙串中的密码
Safari Safari的同步书签功能很棒,还可以看到其他设备没关掉的网页.为了省时间,一些经常进的网站,比如博客,邮箱等,我都会选择让Safari保存密码,还使用iCloud同步!因为一直很放心苹 ...
- js中的forin
前言 自己在平时没事干练练手,发现的以前一直以为是错的.幸亏今天知道了,要不说起来自己还不知道呢. 过程 遍历前置页面上的textbox,给他们赋值(js). 一开始自己用forin遍历的. 如论如何 ...
- 开发中遇到的angularJs的小问题
1.在使用自定义指令后如果需要将指令内部的数据传给外层controller需要设置scope属性,此时注意,如果指令内传出的数据在某种情况下需要清空,如传出一个选中元素的数组,点击清空按钮则清空选中这 ...
- 常用css表达式-最小宽度-上下居中
/* IE6下最小宽度的CSS表达式 */ width:100%; min-width:1024px; _width:expression((document.documentElement.clie ...
- C对字符串的部分操作
字符串分割(C++) 经常碰到字符串分割的问题,这里总结下,也方便我以后使用. 一.用strtok函数进行字符串分割 原型: char *strtok(char *str, const char ...