首页 > 其他分享 >Acwing 788.逆序对的数量

Acwing 788.逆序对的数量

时间:2022-10-27 08:44:17浏览次数:66  
标签:sort int ll 788 mid merge 逆序 Acwing

#include<bits/stdc++.h>
using namespace std;

const int N=1e+5;
int  a[N],tmp[N];
typedef long long ll;  #注意题目条件

ll merge_sort(int q[],int l,int r){
    if(l>=r) return 0;
    int mid=l+r>>1;
    
    ll res=merge_sort(q,l,mid)+merge_sort(q,mid+1,r);  #注意
	 
    int k=0,i=l,j=mid+1;
    while(i<=mid&&j<=r){
    	if(q[i]<=q[j])
    		tmp[k++]=q[i++];
    	else{
   			res+=mid-i+1;  #回忆计算过程(力扣视频上有)
   			tmp[k++]=q[j++];
		}	
	}
	
	while(i<=mid)
		tmp[k++]=q[i++];
	while(j<=r)
		tmp[k++]=q[j++];
		
	for(i=l,j=0;i<=r;i++,j++)
		q[i]=tmp[j];
	
	return res;

}

int main(){
    int n;
    cin>>n;
    for (int i = 0; i < n; i ++ ) scanf("%d", &a[i]);
    cout<<merge_sort(a,0,n-1)<<endl;
    return 0;
}

标签:sort,int,ll,788,mid,merge,逆序,Acwing
From: https://www.cnblogs.com/Nikkie-02/p/16830813.html

相关文章

  • Acwing 787.归并排序
    注意理解代码层次。#include<bits/stdc++.h>usingnamespacestd;#defineN10e5+10;//数组开太小容易栈溢出inta[N],tmp[N];voidmerge_sort(intq[],intl......
  • AcWing 1022. 宠物小精灵之收服
    宠物小精灵之收服(二维费用背包问题)原题链接:https://www.acwing.com/problem/content/1024/思路先做一个阅读理解每一个小精灵只能收一次->01背包接下来去考虑体积、......
  • Acwing 快速排序
    基于分治的思想,每次划分后,保证基准(x)前的数都比基准小,其后的树都比基准大即可。#include<iostream>usingnamespacestd;constintN=100010;intq[N];voidquic......
  • P7883 平面最近点对(加强加强版)
    题目链接P7883平面最近点对(加强加强版)题目背景P1429平面最近点对(加强版)里最高赞题解写道:我们充分发扬人类智慧:将所有点全部绕原点旋转同一个角度,然后按\(x\)坐标......
  • ACWing 4480 -- 二分&&双指针&&思维
    题目描述倒垃圾思路其实就是思维题,题意很简单,找到一个居民左侧和右侧(如果存在的话)的垃圾桶中最近的那个垃圾桶,然后让那个垃圾桶的计数器加一。从题目中挖掘的性质:左......
  • AcWing 271杨老师的照相排列
    思路\(1=<k<=5\),所以最多会有五个位置,五个位置分配人,即集合为f[a][b][c][d][e]表示五个位置各放了a,b,c,d,e个人的方法的数量,同时h[1]>=h[2]>=h[3]>=h[4]>=h[5],所......
  • ACWing - 4493 -- 思维题&&并查集&&dfs
    题目描述环形连通分量思路对于一个无向图中的简单环(环中边的数量等于点的数量),有一个很强的性质:每个点的度数等于\(2\)。那么我们只需要先找出所有的连通块,然后判......
  • AcWing168 生日蛋糕(剪枝)
    原题链接思路的话,就是暴搜加剪枝,中间有个放缩思路看这篇#include<bits/stdc++.h>#definepbpush_back#definefifirst#definesesecond#defineall(x)(x).begi......
  • AcWing107 超快速排序(树状数组找逆序对)
    原题链接思路求到底要和相邻元素交换几次,其实就是求逆序对的数量,有几对逆序对就要交换几次,因为只能相邻的之间交换(超快速排序?冒泡排序!)利用树状数组求逆序对大概想法......
  • AcWing 216. Rainbow的信号
    题目链接:​​传送门​​将权值转化成二进制来看,最多30位枚举每一位并且枚举一个右端点通过这个右端点判断有多少个左端点符合条件,累计贡献要注意单独讨论左端点等于右端......