BestCoder Round #32_1001 以及 hdu 5182
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的更多相关文章
- BestCoder Round #34_1002 以及 hdu 5191
枚举最终的W堆积木在哪,确定了区间,那么就需要把高于H的拿走,低于H的补上,高处的积木放到矮的上面,这样最优. 注意多出来的积木可以放在已有积木的前面或者后面,独立成一堆积木,所以需要在n堆积木的前后 ...
- HDU 5904 - LCIS (BestCoder Round #87)
HDU 5904 - LCIS [ DP ] BestCoder Round #87 题意: 给定两个序列,求它们的最长公共递增子序列的长度, 并且这个子序列的值是连续的 分析: 状态转移方程式 ...
- HDU 5908 Abelian Period (BestCoder Round #88 模拟+暴力)
HDU 5908 Abelian Period (BestCoder Round #88 模拟+暴力) 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=59 ...
- hdu 5667 BestCoder Round #80 矩阵快速幂
Sequence Accepts: 59 Submissions: 650 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536 ...
- hdu 5643 BestCoder Round #75
King's Game Accepts: 249 Submissions: 671 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 6 ...
- hdu 5641 BestCoder Round #75
King's Phone Accepts: 310 Submissions: 2980 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
- hdu 5636 搜索 BestCoder Round #74 (div.2)
Shortest Path Accepts: 40 Submissions: 610 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: ...
- 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 ...
- 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 ...
随机推荐
- 《HelloGitHub》第 16 期
<HelloGitHub>第 16 期 兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这是一个面向编程新手.热爱编程. ...
- ibatis 架构
从结构图中我们能够看出来ibatis框架中的几个关键的结构: 1. SqlMapConfig.xml 2. SqlMap.xml 3. ParameterObject 4. ...
- golang windows 安装方法
编译器下载链接:https://golang.org/dl/ 默认安装到C盘,不用修改. 添加环境变量: 配置环境变量: 注:C:\mygo\bin 配置这个后,则可以直接在 Dos ...
- PHP中通过sqlsrv调用存储过程——成绩排名去除重复字段的数据行
培训考试项目中,需要实现考试成绩排名:排名参考项为分数(score降序).参加日期(attendtime升序).第几次参加考试(frequency升序):并且,每个用户只保留一条数据(pid). 考试 ...
- Keras Xception Multi loss 细粒度图像分类
作者: 梦里茶 如果觉得我的工作对你有帮助,就点个star吧 关于 这是百度举办的一个关于狗的细粒度分类比赛,比赛链接: http://js.baidu.com/ 框架 Keras Tensorflo ...
- ES6 变量、常量声明总结
较之前ES5,新颁布在声明上有改变 一.var 对比 let 1.作用域不同 let只在命令所在的代码块 {} 里有效 ES5只有全局作用域和函数作用域,没有块级作用域,带来很多不合理的场景,比如 ...
- httpd页面用户访问认证控制
[root@liubin-pc ~]# yum install -y httpd 客户机地址限制 通过配置Order.Deny from.Allow from 来限制客户机 allow.deny :先 ...
- 自定义Git之使用centos搭建git 服务器
Github 公开的项目是免费的,但是如果你不想让其他人看到你的项目就需要收费. 这时我们就需要自己搭建一台Git服务器作为私有仓库使用. 接下来我们将以 Centos 为例搭建 Git 服务器. 1 ...
- jquery左右切换的无缝滚动轮播图
1.HTML结构: <head> <script type="text/javascript" src="../jquery-1.8.3/jquery. ...
- 乐卡上海网点地图制作心得 | 百度地图API使用心得
前言 事情的起因是我的爱人喜欢收集一些美丽的乐卡(明信片的一种,正面是美丽壮阔的风景照).作为一个坚实的后盾自然要支持她!于是我经常借着午休穿梭在大街小巷,凭借乐卡官方提供的乐卡网点地址进行寻找并取卡 ...