P1116 车厢重组

题目描述

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

输入输出格式

输入格式:

输入文件有两行数据,第一行是车厢总数N(不大于10000),第二行是N个不同的数表示初始的车厢顺序。

输出格式:

一个数据,是最少的旋转次数。

输入输出样例

输入样例#1:

4
4 3 2 1 

输出样例#1:

6

重温冒泡的精髓

#include<iostream>
#include<cstdio>
#include<string.h>
#include<algorithm>
#include<math.h>
#include<cmath>
using namespace std;
int n,a[1200],ans,t;
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)    scanf("%d",&a[i]);

    for(int i=1;i<=n;i++)
    for(int j=1;j<=n;j++)
    {
        if(a[j-1]>a[j])
        {
            t=a[j];
            a[j]=a[j-1];
            a[j-1]=t;
            ans++;
        }
    }
    cout<<ans;
    return 0;
}

				
时间: 2024-11-04 20:33:24

P1116 车厢重组的相关文章

1683 车厢重组

个人博客:doubleq.win 1683 车厢重组 时间限制: 1 s 空间限制: 1000 KB 题目等级 : 白银 Silver 题解 题目描述 Description 在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转.一个车站的职工发现桥的长度最多能容纳两节车厢,如果将桥旋转180度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排列车厢的顺序.于是他就负责用这座桥将进站的车厢按车厢号从小到大排列.他退休后,火车站决定将这一工作自动化,其中一项重要的工作是编一个程序,

1683 车厢重组 codevs

http://codevs.cn/problem/1683/ 时间限制: 1 s 空间限制: 1000 KB 题目等级 : 白银 Silver 题目描述 Description 在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转.一个车站的职工发现桥的长度最多能容纳两节车厢,如果将桥旋转180度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排列车厢的顺序.于是他就负责用这座桥将进站的车厢按车厢号从小到大排列.他退休后,火车站决定将这一工作自动化,其中一项重要的工作是编一个程序

codevs 1683 车厢重组(水题日常)

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

车厢重组

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

栈例题-火车车厢重组

一组火车车厢编号1-n 从右向左经过车站 每节车厢可以临时进站(栈),放过主线上的几节车厢后再重新上路跟上. 输入车厢数和希望得到的车厢顺序,判断是否可能. CCF教材下册P149,例6.9 代码如下: 1 #include <iostream> 2 #include <string> 3 #include <cmath> 4 #include <algorithm> 5 using namespace std; 6 struct Stack 7 { 8 i

分治算法小总结 x

分治算法的基本思想是将一个规模为 N 的问题分解为 K 个规模较小的子问题,这些子问题相互独立且与原问题性质相同.求出子问题的解,就可得到原问题的解. ——以上来自百度百科. * 分治法解题的一般步骤:1 分解,将要解决的问题划分成若干规模较小的同类问题:- 二分法:区间对半分开2 求解,当子问题划分得足够小时,用较简单的方法解决:- 边界情况:可以直接操作3 合并,按原问题的要求,将子问题的解逐层合并构成原问题的解.- 合并操作:根据不同的题目来确定 其实这个题用冒泡排序做的,但用归并排序也能

C语言程序设计100例之(22):插入排序

例22  插入排序 问题描述 排序是计算机程序设计中的一种重要操作,它的功能是将一个数据元素或记录的任意序列,重新排列成一个以关键字递增(或递减)排列的有序序列. 排序的方法有很多,简单插入排序就是一种简单的排序算法. 插入排序的基本思想是顺序将一个待排序的记录按其关键字值的大小插入到一个有序的序列中,插入后该序列仍然是有序的. 简单插入排序是一种最简单的排序方法.它的排序过程为:先将待排序序列中第1个记录看成是一个有序的子序列,然后从第2个记录起依次逐个地插入到这个有序的子序列中去.这很像玩扑

排序算法练习(二)

分治算法_求逆序对 AYYZOJ p1434 [问题描述] 给定一个序列a1,a2,…,an,如果存在i<j并且ai>aj,那么我们称之为逆序对,求逆序对的数目. [输入格式] 第一行为n,表示序列长度,接下来的n行,第i+1行表示序列中的第i个数. [输出格式] 所有逆序对总数. [输入样例] 4 3 2 3 2 [输出样例] 3 [数据范围] N<=10^5,Ai<=10^5. 思路:与归并排序联系起来. 分析:     归并排序是将序列a[1,H]分成两部分——a[1,mid

暑假集训(1)第五弹 -----Rails(Uva514)

PopPush城市有一座著名的火车站.这个国家到处都是丘陵.而这个火车站是建于上一个世纪.不幸的是,那时的资金有限.所以只能建立起一条路面铁轨.而且,这导致这个火车站在同一个时刻只能一个轨道投入使用,因为它缺少空间,两列火车将无路可走.具体看下图.   当地的惯例是每一列火车从A方向驶向B方向时候,会用某种方式将车厢重组.假设火车将要到达A方向,拥有N个车厢(N<=1000),这些车厢按照递增顺序标记为1到N.负责从组车厢的领导,必须知道是否能从组车厢让它驶出B,而这个重组的序列就是a1\a2\