题目描述

在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转。一个车站的职工发现桥的长度最多能容纳两节车厢,如果将桥旋转 180 度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排列车厢的顺序。于是他就负责用这座桥将进站的车厢按车厢号从小到大排列。他退休后,火车站决定将这一工作自动化,其中一项重要的工作是编一个程序,输入初始的车厢顺序,计算最少用多少步就能将车厢排序。

输入格式

共两行。

第一行是车厢总数 N(N≤10000)
  
第二行是 N个不同的数表示初始的车厢顺序。

输出格式

一个整数,最少的旋转次数。

样例 1

样例输入 1
4
4 3 2 1

样例输出 1
6

解题思路:看到这个题目,我立刻就想到了冒泡排序,于是便想到了用冒泡来做,结果就AC了。

首先,啥是冒泡排序呢。(这是我自己的理解,如有问题请斧正)其实这是一种排序算法,它的原理如下:(排序目标:数据从左到右为从小到大。)首先,我们假设有这么一串数据:8 9 4 5 1,我们先从数据的第一位开始。数据的第1位是8,我们将其与后一位进行比较,也就是9(规则是这样的,若后一位比前一位数小,则二者位置交换之),9比8大,因此二者不交换。然后我们继续下一步,将数据的第二位与第三位比较,1比9小,二者交换,此时数据便成了8 4 9 5 1 ,接着我们继续下一步,将数据的第三位与第四位比较,5比9小,二者换位,此时数据变成8 4 5 9 1.再接着我们将数据的第四位与第五位进行比较,1比9小,二者交换,数据变为8 4 5 1 9.细心的你一定会发现,此时最大的一位数已经排到了最右边。那么,既然我的目标已经完成,我们最右边的这个数就可以不管了,下一次我们只需要进行到将数据的第三位与第四位比较就可以了,也就是说,每次循环遍历的数据数会比上一次循环少1。为什么会这样呢?聪明的你一定发现了,每次循环就会把遍历到的最大数放到右边,以此类推,第二次循环结束后第二大的数8会放在右往左第二位,第三次循环结束后第三大的数5会放在右往左第三位......因此,每次循环到的最后一位就是上一次循环的最后一位往前推一位。由于这种方法使数据向泡泡一样,大的往上飘,小的往下飘,便叫冒泡排序。让我们回到题目,要通过桥将车厢从小到大排序,而桥的功能是使相邻两个车厢调换位置。这很像什么?不就是冒泡排序嘛!因此要解这道题,只需要写一个冒泡排序,再设定一个初始值为0的变量,在每次交换的时候加一,最后输出该变量即是正解。

代码:

#include <bits/stdc++.h>
using namespace std;int main() {int a[100086], n, ans = 0;cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];}for (int i = n; i > 1; i--) {for (int j = 1; j <= i - 1; j++) {if (a[j] > a[j + 1]) {swap(a[j], a[j + 1]);ans++;}}}cout << ans;return 0;}

洛谷刷题笔记5.p1116 车厢重组相关推荐

  1. 洛谷刷题笔记 地球人口承载力估计

    题目描述 假设地球上的新生资源按恒定速度增长.照此测算,地球上现有资源加上新生资源可供 x 亿人生活 a 年,或供 y 亿人生活 b 年. 为了能够实现可持续发展,避免资源枯竭,地球最多能够养活多少亿 ...

  2. 洛谷刷题笔记 乘方计算

    题目描述 给出一个整数 a 和一个正整数 n,求乘方 a^n. 输入格式 一行,包含两个整数 a 和 n.-−1000000≤a≤1000000,1≤n≤10000. 输出格式 一个整数,即乘方结果. ...

  3. 洛谷刷题笔记 整理药名

    题目描述 医生在书写药品名的时候经常不注意大小写,格式比较混乱.现要求你写一个程序将医生书写混乱的药品名整理成统一规范的格式,即药品名的第一个字符如果是字母要大写,其他字母小写. 如将 ASPIRIN ...

  4. 洛谷刷题笔记 求一元二次方程

    题目描述 利用公式 : 求一元二次方程 ax^2+bx+c=0的根,其中 a 不等于 0.结果要求精确到小数点后 5 位. 输入格式 输入一行,包含三个浮点数 a,b,c(它们之间以一个空格分开),分 ...

  5. 洛谷刷题笔记 打印 ASCII 码

    题目描述 输入一个除空格以外的可见字符,输出其 ASCII 码. 输入格式 一个除空格以外的可见字符. 输出格式 一个十进制整数,即该字符的 ASCII 码. 输入输出样例 输入 #1复制 A 输出 ...

  6. 洛谷刷题笔记 奥运奖牌计数

    题目描述 2008年北京奥运会,A 国的运动员参与了 n 天的决赛项目 (1≤n≤100).现在要统计一下 A 国所获得的金.银.铜牌数目及总奖牌数.输入第 1行是 A 国参与决赛项目的天数 n,其后 ...

  7. 洛谷刷题笔记 分糖果

    题目描述 某个幼儿园里,有 5位小朋友编号依次为 1,2,3,4,5 他们按照自己的编号顺序围坐在一张圆桌旁.他们身上有若干糖果,现在他们玩一个分糖果游戏.从 1 号小朋友开始,将自己的糖果均分成 3 ...

  8. 洛谷刷题:明明的随机数、质因数分解、不高兴的津津、津津对的储存计划和车厢重组

    记录洛谷刷题过程QAQ 一. [NOIP2006 普及组] 明明的随机数 题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 N N N 个 1 1 1 到 1 ...

  9. 洛谷刷题C语言:数字反转、再分肥皂水、三角形面积、Apples Prologue/苹果和虫子、数的性质

    记录洛谷刷题QAQ,一些不大优雅的代码 一.[深基2.例7]数字反转 题目描述 输入一个不小于 100100100 且小于 100010001000,同时包括小数点后一位的一个浮点数,例如 123.4 ...

  10. 洛谷刷题C语言:Even? Odd? G、The Robot Plow G、pb的游戏(1)、询问学号、cover

    记录洛谷刷题QAQ 一.[USACO09OCT]Even? Odd? G 题目描述 Bessie's cruel second grade teacher has assigned a list of ...

最新文章

  1. PTA数据结构与算法题目集(中文)7-45
  2. Reactjs-JQuery-Omi-Extjs-Angularjs对比
  3. 写在前面-Terraform
  4. Windows系统软件推荐
  5. 为什么前端开发这么不稳定?
  6. iphone各机型参数对比_我们对比新旧两代iPhone,发现iPhone 12最值得买
  7. oracle 02380,oracle 11.2.0.3 fornb…
  8. 对象数组快速掌拨 java 0913
  9. xcode里面找不到头文件
  10. 计算机课外作业,东南大学微机课外作业
  11. 某个目录下产品根据创建时间下架
  12. 调查:2013年十大急需的热门IT技能
  13. Word中英语音标出现乱码情况,解决办法
  14. 指南针c语言程序,HMC5883L电子指南针单片机程序
  15. 数据仓库系列文章二:浅谈企业数据仓库总线矩阵
  16. 北京某公司IBM X3650M3存储崩溃的解决过程
  17. Conlletion集合框架总结大全
  18. 如何检索、写作和顺利发表一篇SCI论文?
  19. 软件开发过程与项目管理(14.项目核心计划执行控制)
  20. cad记忆口诀_42条简单易记的CAD口诀,一天精通入门,七天上手绘图!

热门文章

  1. 随手写了一个鸡肋的二叉树
  2. 命令行操作flyway
  3. python小白进阶之路三——七段数码管的绘制+做一个酷炫的倒计时(函数的复用)
  4. sdk 今日头条_今日头条商业SDK(激励视频)的坑
  5. 2021最新Java面试真题解析!java开发技能掌握
  6. IOI 2022国际信息学竞赛那些事儿(附Day1原题)
  7. Java IO流:(十二)NIONIO2简单介绍
  8. R语言 指定列缺失值定值填充
  9. 网络安全-破解win10开机密码
  10. 联想拯救者笔记本安装ubuntu系统不能正常关机