首页 > 其他分享 >逆序对

逆序对

时间:2022-11-19 01:33:06浏览次数:41  
标签:int mid long msort MAXN 逆序

今天来水一道题目, 名字叫逆序对.

主要是复习一下归并排序的写法.

Code

#include <bits/stdc++.h>
using namespace std;
#define MAXN 500005
#define F(i, a, b) for(int i=a; i<=b;i++)
#define Fd(i, a, b) for(int i=a;i>=b;i--)
int a[MAXN], c[MAXN], n;
long long ans;
void msort(int b, int e){
	if(b==e) return;
	int mid = (b+e)/2, i=b; int j=mid+1, k=b;
	msort(b, mid); msort(mid+1, e);
	while(i<=mid && j<=e){
		if(a[i]<=a[j]) c[k++]=a[i++];
		else{
			c[k++]=a[j++];
			ans += (mid-i+1);
		}
	}
	while(i<=mid) c[k++] = a[i++];
	while(j<=e) c[k++] = a[j++];
	F(i, b, e) a[i] = c[i];
}
int main(){
	int n; cin>>n;
	F(i, 1, n) cin>>a[i];
	msort(1,n);
	cout<<ans<<endl;
}

标签:int,mid,long,msort,MAXN,逆序
From: https://www.cnblogs.com/augpath/p/16905350.html

相关文章

  • 38:列表_排序_revered逆序_max_min_sum
    ###列表排序###修改原列表,不建新列表的排序>>>a=[20,10,30,40]>>>id(a)46017416>>>a.sort()#默认是升序排列>>>a[10,20,30,40]>>>a=[10,20,30,40]>>......
  • [C#]数值逆序排序五种大法汇总
    汇总如下:usingSystem;usingSystem.Collections;usingSystem.Linq;namespaceSortDemo{publicclassMySort2:IComparer{publicintComp......
  • 长为n的全部排列的逆序对的数量
    经典结论:长度为n的排列的逆序对数量的期望为C(n,2)/2。简单证明:任意两个数在一个排列中,为逆序的概率是(1/2),选择两个数的方案为C(n,2)。 故长度为n的排列的逆序对数量......
  • 元素的逆序
    1#include<iostream>2usingnamespacestd;3intmain()4{5inttemp=0;6intarr[6]={0,1,2,3,4,5};78for(inti=0;i<=6/2......
  • 获取数组中逆序对的对数
    packageclass04;importjava.util.Arrays;/***获取数组中逆序对的对数*<p>*在一个数组中,*任何一个前面的数a,和任何一个后面的数b,*如果(a,b)是降序的,......
  • OJ周赛第二场——逆序对
    逆序对 问题描述 给你一个长度为n的排列的置换p(长度为n的排列的置换的定义为:对于排列1,2,3....n,你可以多次交换两个数后的序列。比如(1,5,4,2,3)是一个排列的置换,(3,2......
  • 字符串逆序(多种解法)
    1:>#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<string.h>voidreverse_string(chararr[]){intl=0;intr=strlen(arr)-1;while(l<r){......
  • [AcWing 788]逆序对的数量
    点击查看代码#include<iostream>usingnamespacestd;constintN=100010;intn;intq[N],tmp[N];typedeflonglongLL;//最坏情况下逆序数为n*(n-1)/2结......
  • JAVA中输入数字,然后再逆序输出来
    一、问题描述:就是我们现在输入一些数字,然后我们将输入的数字,倒着再输出出来。实现代码如下:importjava.util.Scanner;publicclassni_sort{publicstaticvoid......
  • 787 逆序对的数量
    #include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;constintN=100010;intn;intq[N],tmp[N];LLmerge(intl,intr){if(l>=r)ret......