#include <iostream>
#include <cstdio>
using namespace std;
#define mid(x,y) ((x&y) + ((x^y)>>1))
const int N = 500005;long long a[N];
long long ans; // 记录逆序对个数
void merge_sort(int l, int r) {if(l >= r) return;int m = mid(l,r);merge_sort(l, m);merge_sort(m+1, r);long long *arr = new long long[r-l+1];int i = l, j = m+1, k = 0;while(i <= m && j <= r) {if(a[i] <= a[j]) {arr[k++] = a[i++];}else {ans += (m - i + 1);arr[k++] = a[j++];}}while(i <= m) arr[k++] = a[i++];while(j <= r) arr[k++] = a[j++];for(int i = l; i <= r; i++) {a[i] = arr[i-l];}delete []arr;
}
int main() {int n;while(cin >> n, n) {for(int i = 0; i < n; i++) {cin >> a[i];}ans = 0;merge_sort(0, n-1);cout << ans << endl;}return 0;
}
详细解决方案
[算法] doj 1067 归并法求逆序对 Ultra-QuickSort
热度:52 发布时间:2023-12-14 09:42:07.0
相关解决方案
- Oracle 10g WIn7, OracleOraDb10g_home1TNSListener 启动时报错 1067 ?该怎么解决
- 施用32位客户端 error 1067
- MySQL无法启动,异常编号:1067
- Windows 无法启动 SQL Server (MSSQLSERVER) 服务(位于 本地计算机 上)。异常 1067: 进程意外终止
- 算法范例-C#快速排序-QuickSort
- 发生系统异常 1067
- 无法启动MYSQL服务”1067 进程意外终止”解决方法——汇总及终极方法
- 【mysql 服务启动失败,报 1067 异常】 的可能原因及解决方案
- 1067. 试密码(20) PAT
- PAT甲级-1067 Sort with Swap(0, i) (25分)
- PAT乙级-1067 试密码 (20分)
- 手写快速排序算法——QuickSort(Java代码实现)
- ACdream 1067:Triangles
- 初学者的MySQL 1067 错误解决方法
- POJ2299 [Ultra-QuickSort] 值域树状数组
- PAT(Advanced) 1067 Sort with Swap(0, i)(25 分)
- 1067 Sort with Swap(0, i) (25分)运行超时
- 排序算法之快速排序(QuickSort)
- Ultra-Fast Mathematician
- POJ-1067 取石子游戏
- PAT (Advanced Level) Practice 1067 Sort with Swap(0, i) (25 分)
- PAT (Basic Level) Practice (中文)1067 试密码 (20 分)
- ZZULIOJ 1067: 有问题的里程表,Java
- 2016级算法第一次上机——E ModricWang's QuickSort
- ERROR 1067 (42000): Invalid default value for ‘createtime‘
- XTU OJ 1067 IO5
- mysql服务器无法启动,系统错误:1067
- POJ2299 Ultra-QuickSort 树状数组
- PAT--1067 试密码 (C语言)
- poj2299Ultra-QuickSort(树状数组+离散化)