2123 火车转向

描述

火车站经常会遇到车厢摆放这样的问题,特别是在工业技术还不发达的过去,车厢的处理一直是一个大问题。 Ok,不多说了,时间宝贵。这里马上和大家分享一下X10A遇到的这个难题。大家都知道在十八世纪的英国有这样一种桥:当船驶来时,如果桥挡住了船,那么我们可以将这个桥旋转90度,这样船就可以从桥的左右通行无阻。那么如果将这种桥运用到火车的车厢调度上又会有怎样的妙用呢?首先我们知道这种桥一次最多可以放两个车厢(当然这两个车厢是连着的),那么通过将桥梁旋转180度就可以交换这两个车厢的顺序。有了以上的这些基础,X10A的问题出来了:请问我们最少需要用上面的方法移动多少次两个相邻的车厢使得我们给出的一列火车车厢顺序(这里用数字标识火车车厢的编号,编号永远从1开始)变成标准的车厢排列顺序。这里规定标准的车厢顺序是1,2,3....,n

输入

输入的第一行是一个正整数t,表示一共有t组数据。之后的每组输入包含两行。第一行是车厢的数量n,第二行是一串数字代表现在给出的火车车厢顺序。

输出

每组输出包含一行,输出以下内容: Optimal train swapping takes S swaps. S在这里代表最少的转换次数。

样例输入
2
2
2 1
3
2 1 3
样例输出
Optimal train swapping takes 1 swaps.

Optimal train swapping takes 1 swaps.



此题其实是逆序对


#include <stdio.h>

int main()
{
	int t;
	scanf("%d", &t);
	int a[100001];
	while(t --)
	{
		int n;
		scanf("%d", &n);
		int i, j;
		for(i = 0; i < n; i ++)
			scanf("%d", &a[i]);
		int res = 0;
		for(i = 0; i < n-1; i++)
			for(j = i+1; j < n; j ++)
			{
				if(a[i] > a[j])
					res ++;
			}
			printf("Optimal train swapping takes %d swaps.\n", res);
	}
	return 0;
}


你可能感兴趣的:(2123 火车转向)