Sort(归并)
2024-09-10 00:25:10
Sort
时间限制:1000 ms | 内存限制:65535 KB
难度:4
- 描述
- You want to processe a sequence of n distinct integers by swapping two adjacent sequence elements until the sequence is sorted in ascending order. Then how many times it need. For example, 1 2 3 5 4, we only need one operation : swap 5 and 4.
- 输入
- The input consists of T number of test cases.(<0T<1000) Each case consists of two lines: the first line contains a positive integer n (n <= 1000); the next line contains a permutation of the n integers from 1 to n.
- 输出
- For each case, output the minimum times need to sort it in ascending order on a single line.
- 样例输入
-
2
3
1 2 3
4
4 3 2 1 - 样例输出
-
0
6
代码:#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int MAXN = ;
int num[MAXN], temp[MAXN];
int ans;
void mg(int l, int m, int r){
int i = l, j = m + , cur = l;
while(i <= m && j <= r){
if(num[i] < num[j]){
temp[cur++] = num[i++];
}
else{
ans += j - cur;
temp[cur++] = num[j++];
}
}
for(int i = l; i <= r; i++)
num[i] = temp[i];
}
void ms(int l, int r){
int m;
if(l < r){
m = (l + r) >> ;
ms(l, m);
ms(m + , r);
mg(l, m, r);
}
}
int main(){
int T,n;
scanf("%d", &T);
while(T--){
scanf("%d", &n);
for(int i = ; i < n; i++){
scanf("%d", num + i);
}
ans = ;
ms(, n - );
printf("%d\n", ans);
}
return ;
}
最新文章
- jprofiler_监控远程linux服务器的JVM进程(实践)
- DataInputStream和DataOutputStream
- FireDac 与数据库连接时字符集及对应的字段类型问题
- Codeforces Round #126 (Div. 2)
- SQLServer中临时表与表变量的区别分析
- (hdu)1285 确定比赛名次
- (转)log4net使用详解
- 身份证js检测
- Python基础2 编码和逻辑运算符
- # WPF动画速率效果
- 解决SpannableString在Android组件间传递时显示失效的问题
- 基于springboot的ssm
- C++ 之sizeof运算符
- [转帖]Docker的数据管理(volume/bind mount/tmpfs)
- git 合并子工程
- [转]谈NAND Flash的底层结构和解析
- 关于extern的使用
- 数据分析之Numpy库入门
- Packet for query is too large (1660 >; 1024). You can change this value on the server by setting the max_allowed_packet&#39; variable.
- Java中关键字static的使用