信息学奥赛一本通(1182:合影效果)——归并排序
1182:合影效果
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 12645 通过数: 7214
【题目描述】
小云和朋友们去爬香山,为美丽的景色所陶醉,想合影留念。如果他们站成一排,男生全部在左(从拍照者的角度),并按照从矮到高的顺序从左到右排,女生全部在右,并按照从高到矮的顺序从左到右排,请问他们合影的效果是什么样的(所有人的身高都不同)?
【输入】
第一行是人数n(2 <= n <= 40,且至少有1个男生和1个女生)。
后面紧跟n行,每行输入一个人的性别(男male或女female)和身高(浮点数,单位米),两个数据之间以空格分隔。
【输出】
n个浮点数,模拟站好队后,拍照者眼中从左到右每个人的身高。每个浮点数需保留到小数点后2位,相邻两个数之间用单个空格隔开。
【输入样例】
6
male 1.72
male 1.78
female 1.61
male 1.65
female 1.70
female 1.56
【输出样例】
1.65 1.72 1.78 1.70 1.61 1.56
【分析】
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。
【参考代码】
#include <stdio.h>
#include <string.h>
#define N 50
double a[N],b[N],r[N];
void msort(int s,int t) //归并排序
{
int i,j,mid,k;
if(s==t) //如果只有一个数字则返回,无需排序
return;
mid=(s+t)/2;
msort(s,mid); //分解左序列
msort(mid+1,t); //分解有序列
i=s;
j=mid+1;
k=s;
while(i<=mid && j<=t) //接下来合并
{
if(a[i]<=a[j])
{
r[k]=a[i];
k++;
i++;
}
else
{
r[k]=a[j];
k++;
j++;
}
}
while(i<=mid) //复制左边子序列剩余
{
r[k]=a[i];
k++;
i++;
}
while(j<=t) //复制右边子序列剩余
{
r[k]=a[j];
k++;
j++;
}
for(i=s;i<=t;i++)
a[i]=r[i];
}
void cmpsort(int n) //比较排序
{
int i,j;
double t;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(b[i]<b[j])
{
t=b[i];
b[i]=b[j];
b[j]=t;
}
}
}
}
int main()
{
int i,j=0,k=0,n;
double x;
char s[N];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf(" %s %lf",s,&x);
if(strcmp(s,"male")==0)
a[j++]=x;
else
b[k++]=x;
}
msort(0,j-1);
cmpsort(k);
for(i=0;i<j;i++)
printf("%.2lf ",a[i]);
for(i=0;i<k;i++)
printf("%.2lf ",b[i]);
}
http://ybt.ssoier.cn:8088/problem_show.php?pid=1182
信息学奥赛一本通(1182:合影效果)——归并排序相关推荐
- 信息学奥赛一本通1182 合影效果
[题目描述] 小云和朋友们去爬香山,为美丽的景色所陶醉,想合影留念.如果他们站成一排,男生全部在左(从拍照者的角度),并按照从矮到高的顺序从左到右排,女生全部在右,并按照从高到矮的顺序从左到右排,请问 ...
- 信息学奥赛一本通 1182:合影效果 | OpenJudge NOI 1.10 07:合影效果
[题目链接] ybt 1182:合影效果 OpenJudge NOI 1.10 07:合影效果 [题目考点] 1. 排序 [君义精讲]排序算法 [解题思路] 解法1:将男生身高和女生身高分别排序 将男 ...
- 信息学奥赛一本通1182:合影效果
时间限制: 1000 ms 内存限制: 65536 KB 提交数: 12967 通过数: 7422 [题目描述] 小云和朋友们去爬香山,为美丽的景色所陶醉,想合影留念.如果他们 ...
- 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)
信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法 更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...
- 信息学奥赛一本通在线提交地址
信息学奥赛一本通 1 C++语言入门 1.1 综合 1.1.1 P1458 地球人口承载力估计 正确: 770 提交: 1794 比率: 42.92 % 1.1.2 P1686 Hello, Worl ...
- 信息学奥赛一本通 (C++)上机练习
信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...
- 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划
总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划 第一节 动 ...
- 信息学奥赛一本通_长乐一中老师演绎“奥赛传奇”
董永建(右一)在课堂上. 台海网5月14日讯 据福州晚报报道,长乐一中有一位"传奇"老师--15年来,他辅导的学生在全国高中生信息学奥赛中获金牌3人次.银牌3人次.铜牌5人次:在全 ...
- 信息学奥赛一本通 提高篇 第5章 矩阵乘法
例1 矩阵AXB 信息学奥赛一本通(C++版)在线评测系统 [矩阵乘法]矩阵A×B_Uletay-CSDN博客 矩阵乘法--矩阵A×B_vina的博客-CSDN博客 一本通1641[例 1]矩阵 A× ...
- 《信息学奥赛一本通提高篇》第6章 组合数学
例1 计算系数(NOIP2011提高) 信息学奥赛一本通(C++版)在线评测系统 NOIP2011计算系数_nanhan27的博客-CSDN博客 「NOIP2011」 计算系数 - 组合数_TbYan ...
最新文章
- 从头开始学习Adobe Photoshop CC图像编辑
- 某百度程序员中午面试一个阿里程序员,晚上去阿里面试,面试官竟是中午那个人!...
- html container显示边框,伪元素实现边框设置.html
- Java基础10:全面解读Java异常
- Delphi 中的 XMLDocument 类详解(5) - 获取元素内容
- Flume-NG + HDFS + HIVE 日志收集分析 | EyeLu技术Blog
- 从趣味游戏到排序算法(2)
- c语言:从标准输入读取几行输入,输入打印到标准输出上,加上行号
- idea 开源申请授权到期怎么办
- 油猴GM_download使用及下载扩展名flac,油猴脚本修改下载扩展名
- 微信小程序地图实现展示路线路
- windows下的gitbub使用入门
- OVM免费混合虚拟化系列教程之一:关于配置要求!
- 使用spire.doc for java为word添加页码、文字水印、书签(去除警告信息)
- 华为如何不关闭进程_关闭华为手机后台程序的小技巧,终于知道了,再也不用担心内存了...
- fw325r服务器无响应,迅捷fw325r显示已连接不可上网怎么办?
- 手机验证码登录,账号登录结合
- java实现word、pdf、excel文件下载功能
- 使用Nginx在云服务器上搭建图床
- (1)英文分词——波特词干提取算法