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

788. 逆序对的数量

时间:2023-04-07 21:45:53浏览次数:51  
标签:int 788 mid long merge 数量 逆序

link

code

#include<bits/stdc++.h>

using namespace std;

const int N = 100010;

int a[N];
int tp[N];
long long ans;

void merge(int l, int r){
	if(l >= r) return;
	int mid = l + r >> 1;
	merge(l ,mid), merge(mid + 1, r);
	int i = l, j = mid + 1, k = 0;
	while(i <= mid && j <= r){
		if(a[i] <= a[j]){
			tp[k++] = a[i++];
		}else{
			tp[k++] = a[j++];
			ans += mid - i + 1;
		}
	}
	while(i <= mid) tp[k++] = a[i++];
	while(j <= r)   tp[k++] = a[j++];
	
	for(int i = 0; i < k; i++)
	a[i + l] = tp[i];
}

int main(){
	int n; cin >> n;
	for(int i = 1; i<= n; i++) cin >>a[i];
	merge(1,n);

	cout << ans;
	return 0;
}

标签:int,788,mid,long,merge,数量,逆序
From: https://www.cnblogs.com/index-12/p/17297446.html

相关文章

  • 数量关系和差倍比题目中涉及倍数or百分比的问题
    出现倍数时,记得分清是A比B多n倍A=(n+1)BA是B的n倍A=nB出现百分比,记得1+or1-,否则就是占比倍数题目:百分比题目:......
  • 837. 连通块中点的数量
    linkcode#include<bits/stdc++.h>usingnamespacestd;constintN=100010;intfa[N],a[N];intcnt[N];intfind(intx){ if(x!=fa[x])fa[x]=find(fa[x]); returnfa[x];}voidun(intx,inty){ x=find(x); y=find(y); if(x!=y){ fa......
  • 数量关系中同余问题
    该题型一般为:取A剩a,取B剩b,取C剩c...,可以通过估算猜数字方式进行做题,but慢了!做题步骤:①找到有除数与余数差一样的一组②最小公倍数作周期,差同差减题目:......
  • 题目 1026: [编程入门]数字逆序输出
    题目描述输入10个数字,然后逆序输出。输入格式十个整数输出格式逆序输出,空格分开样例输入1234567890样例输出0987654321解题思路:1.题目要求是输入十个整数。2.所以我们定义数组长度为10就可以了。3.利用for循环输入与输出。注......
  • 数量关系蒙题技巧
    存在一定运气,但如何在10min内搞完10道数量是一个挑战,所以运气也是实力的一部分。①倍数关系,和差关系②极值问题(求最小猜第二小,求最大猜第二大)③区间问题(第三段的正确率超过一半,其次第二段,最后第四段)④几何问题(求边长、周长的问题,蒙整数;蒙半径找2倍关系蒙小的,蒙直径找2......
  • 单向链表和双向链表的逆序的两种实现方式
    单向链表的逆序实现方式publicstaticclassNode{privateintval;privateNodenext;publicNode(intval){this.val=val;}}/**实现单向链表的第一种方式,只通过链表指针的重连来实现*/publicstaticNoderece......
  • 华为OD机试 需要广播的服务器数量
    本期题目:需要广播的服务器数量题目服务器连接方式包括直接相连,间接连接。 A和B直接连接,B和C直接连接,则A和C间接连接。直接连接和间接连接都可以发送广播。给出一个N*N数组,代表N个服务器,matrix[i][j]==1,则代表i和j直接连接;不等于1时,代表i和j不直接连接。 matrix[i][i]=......
  • 剑指offer(Java)-数组中的逆序对(困难)
    题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例1:输入:[7,5,6,4]输出:5限制:0<=数组长度<=50000解题思路:这道题的核心在于归并排序,在归并排序的基础上进行求解逆序对。题解参......
  • 【专题】排列逆序数的奇偶性
    排列逆序数的奇偶性是一个十分常见的属性。不同于直接求逆序数,由于排列的性质,这玩意是可以\(\mathcalO(n)\)直接求解的。为了完成这一点,引入如下基本结论:排列两元素对换,逆序数奇偶性改变。排列的逆序数同余\(n-\#\)环。第一点,在大多数线性代数教材中都有所提及。第二......
  • 数量关系中比·······低/高n%的问题
    在简单的数量关系中,设方程,经常会出现比·······低/高n%的语句,如何更好的设置和分析,要统一办法。①当遇到百分数时候,我习惯设置100x如,设总预算为100x则,基建支出为40x②出现比·······低/高n%的语句,直接列简易方程(低1-,高1+)如,图书购买支出比基建支出低25%则y/40x=......