http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=570&pid=1001

http://acm.hdu.edu.cn/showproblem.php?pid=5182

这道题也是hdu上的5182

官方题解:

对于输入的每一行一两个整数作差,按照差值从大到小排序,如果差值一样,按照后面的整数从小到大排序,如果还是一样按照ID从小到大排序。

首先注意下数据范围,大约100组数据,所有整数都在[1,100] 的范围内,即使是用冒泡法或者选择法排序也不会TLE。其次就要考虑如何将城市的标号一并排序,可以构建一个专门保存城市标号的数组,排序的时候按城市标号对应的数据进行比较,只改变城市标号的位置,数据不用排序。、

先贴一个最简单的代码。

#include<stdio.h>

int main()
{
int i,j,n,pm[][],c[],t,s[]; while(scanf("%d",&n)!=EOF)
{
for(i=;i<n;i++)
{
scanf("%d%d",&pm[i][],&pm[i][]);
c[i]=pm[i][]-pm[i][];
s[i]=i; //s数组记录城市的标号
}
for(i=;i<n-;i++) //首先按照差值排序,注意只是将城市的标号排序
{
for(j=;j<n--i;j++)
{
if(c[s[j]]<c[s[j+]])
{
t=s[j];
s[j]=s[j+];
s[j+]=t;
}
}
}
for(i=;i<n-;i++) //按照第二次的测量值升序排序,同样将城市的标号排序
{
if(c[s[i]]==c[s[i+]])
{
if(pm[s[i]][]>pm[s[i+]][])
{
t=s[i];
s[i]=s[i+];
s[i+]=t;
if(i>)
i=i-;
}
}
}
for(i=;i<n-;i++) //按照输入的顺序排序
{
if(c[s[i]]==c[s[i+]])
{
if(pm[s[i]][]==pm[s[i+]][])
{
if(s[i]>s[i+])
{
t=s[i];
s[i]=s[i+];
s[i+]=t;
if(i>)
i=i-;
}
}
}
}
for(i=;i<n;i++)
{
if(i==)
printf("%d",s[i]);
else
printf(" %d",s[i]);
}
printf("\n");
}
return ;
}

赛后觉得时间用的太多,发现可以用一个结构体将数据保存,用sort函数排序,只要写一下cmp函数。

代码如下:

#include<stdio.h>
#include<algorithm> using namespace std; struct node
{
int pm1;
int pm2;
int decrease;
int number;
}city[]; bool cmp(struct node x,struct node y)
{
if(x.decrease!=y.decrease)
return x.decrease>y.decrease;
if(x.pm2!=y.pm2)
return x.pm2<y.pm2;
return x.number<y.number;
} int main()
{
int n; while(scanf("%d",&n)!=EOF)
{
for(int i=;i<n;i++)
{
scanf("%d%d",&city[i].pm1,&city[i].pm2);
city[i].decrease=city[i].pm1-city[i].pm2;
city[i].number=i;
}
sort(city,city+n,cmp);
for(int i=;i<n;i++)
{
if(i==)
printf("%d",city[i].number);
else
printf(" %d",city[i].number);
}
printf("\n");
}
return ;
}

BestCoder Round #32_1001 以及 hdu 5182的更多相关文章

  1. BestCoder Round #34_1002 以及 hdu 5191

    枚举最终的W堆积木在哪,确定了区间,那么就需要把高于H的拿走,低于H的补上,高处的积木放到矮的上面,这样最优. 注意多出来的积木可以放在已有积木的前面或者后面,独立成一堆积木,所以需要在n堆积木的前后 ...

  2. HDU 5904 - LCIS (BestCoder Round #87)

    HDU 5904 - LCIS [ DP ]    BestCoder Round #87 题意: 给定两个序列,求它们的最长公共递增子序列的长度, 并且这个子序列的值是连续的 分析: 状态转移方程式 ...

  3. HDU 5908 Abelian Period (BestCoder Round #88 模拟+暴力)

    HDU 5908 Abelian Period (BestCoder Round #88 模拟+暴力) 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=59 ...

  4. hdu 5667 BestCoder Round #80 矩阵快速幂

    Sequence  Accepts: 59  Submissions: 650  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 65536 ...

  5. hdu 5643 BestCoder Round #75

    King's Game  Accepts: 249  Submissions: 671  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 6 ...

  6. hdu 5641 BestCoder Round #75

    King's Phone  Accepts: 310  Submissions: 2980  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: ...

  7. hdu 5636 搜索 BestCoder Round #74 (div.2)

    Shortest Path  Accepts: 40  Submissions: 610  Time Limit: 4000/2000 MS (Java/Others)  Memory Limit: ...

  8. hdu 4956 Poor Hanamichi BestCoder Round #5(数学题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4956 Poor Hanamichi Time Limit: 2000/1000 MS (Java/Ot ...

  9. hdu 5195 DZY Loves Topological Sorting BestCoder Round #35 1002 [ 拓扑排序 + 优先队列 || 线段树 ]

    传送门 DZY Loves Topological Sorting Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131 ...

随机推荐

  1. 小白也能看懂的插件化DroidPlugin原理(二)-- 反射机制和Hook入门

    前言:在上一篇博文<小白也能看懂的插件化DroidPlugin原理(一)-- 动态代理>中详细介绍了 DroidPlugin 原理中涉及到的动态代理模式,看完上篇博文后你就会发现原来动态代 ...

  2. Storm笔记——技术点汇总

    目录 概况 手工搭建集群 引言 安装Python 配置文件 启动与测试 应用部署 参数配置 Storm命令 原理 Storm架构 Storm组件 Stream Grouping 守护进程容错性(Dae ...

  3. openjudge8465:马走日 [搜索]

    描述 马在中国象棋以日字形规则移动. 请编写一段程序,给定n*m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点. 输入 第一行为整数T ...

  4. 【MYSQL】ubuntu13安装mysql(转)

    安装的是mysql-5.0.87-linux-i686-glibc23.tar.gz 1.解压tar.gz tar –xzf mysql-5.0.87-linux-i686-glibc23.tar.g ...

  5. ETL作业调度工具TASKCTL软件安装乱码问题解决

    前两天在安装批量作业调度软件TASKCTL4.5时,将安装介质解压出来后执行安装脚本时,一安装就出现下图乱码. 然后就度娘了一下,发现安装遇到乱码的人还挺多的,大多数解答都说TASKCTL软件里面很多 ...

  6. 闭包(Closure)基础分析

    闭包(Closure) 本文聚焦于回答2个问题: 在全局作用域中,如何读取函数内部的局部变量? 在全局作用域中,如何修改函数内部的局部变量? 变量作用域 JavaScript语言的作用域,一句话概括就 ...

  7. 使用Hibernate模板调用存储过程

    前提是该Dao类已经已经继承了org.springframework.orm.hibernate5.support.HibernateDaoSupport,并且在整个项目中已经配置好了事务,或者是手动 ...

  8. mbos之动态图表设计

    前言 所谓,一图胜千言.人脑有80%的部分专门用于视觉处理.而随着数据时代的全面来临,我们自然有必要将数据转化为图形与图表. Mbos是一个快速,稳定的云端轻应用开发平台.帮助企业快速开发移动应用,加 ...

  9. VS 2017开发插件

    codemaid 代码清洁工具 commentsPlus 注释以斜体方式展示,并提供额外的注释格式 viasfora 尖括号颜色设置 reshaper 必备

  10. python学习===从一个数中分解出每个数字

    题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个"水仙花数",因为153=1 ...