博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
求逆序对
阅读量:6500 次
发布时间:2019-06-24

本文共 1865 字,大约阅读时间需要 6 分钟。

逆序对是交换最少相邻元素交换次数

逆序数

 

在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。

 
如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序数是4。给出一个整数序列,求该序列的逆序数。

Input第1行:N,N为序列的长度(n <= 50000) 

第2 - N + 1行:序列中的元素(0 <= Aii <= 10^9)Output输出逆序数Sample Input

42431

Sample Output

4

归并排序

#include 
#include
using namespace std;const int N=100005;int w[N],sum[N],n;struct T{ int x,num;} a[N],T[N];void la(int l,int r){ if(r-l==1)return; int m=l+r>>1,tm=l+r>>1,tl=l,i=l; la(l,m),la(m,r); while(tl
=r||(tl
<=a[tm].x)) T[i++]=a[tl++],T[i-1].num+=tm-m; else T[i++]=a[tm++]; } for(int i=l; i

sort+查找的

#include 
#include
using namespace std;const int N=100005;int w[N],n;long long la(int l,int r){ if(r-l==1)return 0; int m=l+r>>1,s=la(l,m)+la(m,r),t; for(int i=l; i

树状数组

#include 
#include
using namespace std;const int N = 500005;struct Node{ int val; int pos; friend bool operator <(Node a,Node b) { return a.val < b.val; }};Node node[N];int c[N], hash[N], n;int lowbit(int x){ return x & (-x);}void update(int x){ while (x <= n) { c[x] += 1; x += lowbit(x); }}int getsum(int x){ int sum = 0; while (x > 0) { sum += c[x]; x -= lowbit(x); } return sum;}int main(){ scanf("%d", &n); for (int i = 1; i <= n; ++i) { scanf("%d", &node[i].val); node[i].pos = i; } sort(node + 1, node + n + 1); for (int i = 1; i <= n; ++i) hash[node[i].pos] = i; int ans = 0; for (int i = 1; i <= n; ++i) { update(hash[i]); ans += i - getsum(hash[i]); } printf("%d\n", ans); return 0;}

 

转载于:https://www.cnblogs.com/BobHuang/p/8979955.html

你可能感兴趣的文章
influx 操作_Matlab操作InfluxDB数据库
查看>>
python 窗体表格控件_Python基础学习笔记(十三)图形化界面Tkinter
查看>>
bootstrapt 表格自适应_Java 设置Excel自适应行高、列宽
查看>>
基于multisim的fm调制解调_苹果开始自研蜂窝网调制解调器 最快2024年能用上?
查看>>
win10电脑pppoe拨号模块损坏_北京联通EPON光模块及ROS-PPPoE拨号上网配置
查看>>
mupdf不支持x64_Window权限维持(七):安全支持提供者
查看>>
cf修改游戏客户端是什么意思_瓦罗兰特很有可能取代cf成为国内最火的fps游戏...
查看>>
matlab打开笔记本摄像头_联想笔记本V310摄像头问题解决
查看>>
proto文件支持继承吗_JavaScript继承(一)——原型链
查看>>
rez注入器源码_最简 Spring IOC 容器源码分析
查看>>
itil 容量管理流程_ITIL/ITSM:服务目录设计「精华」
查看>>
labview如何弹出提示窗口_LabVIEW开发者必读的问答汇总,搞定疑难杂症全靠它了!...
查看>>
移动宽带套餐介绍_奋斗20载 整装再出发|千兆光纤入户“数字推手”烟台移动为生活“加速”...
查看>>
提取series中的数值_Python中None和numpy.nan的区别
查看>>
原理面试题_这12道高频原理面试题,你能答出几道?
查看>>
提交失败_金三提交又失败?小易给你支支招
查看>>
小米笔记本air无法充电_30W、45W、65W PD充电器对小米笔记本Air 13.3英寸0~100%充电测试...
查看>>
fidde调试手机_使用Fiddler抓包和调试移动web页面
查看>>
python 解析模块脚本_Python argparse模块应用实例解析
查看>>
大学生免费查题公众号_大学生免费查题公众号?搜题免费公众号?
查看>>