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

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

题目链接:

题意:

给出一个序列,可以相邻的交换k次,求 k 次之后,逆序数对最少是多少;

 

分析:

可以发现,无论怎么交换之后,总共的逆序数对只会-1,那么结果就是,将这个序列排整齐时,要两两交换的次数-k;题目就转换为求这个序列的逆序数对有多少;

这样的两两交换好像是冒泡排序,冒泡排序是O(n^2);

正确解法是归并排序;当我们合并两个有序序列时,如果,要将后面的插入到前一个中间,那么这里就有m-i+1个逆序数对;

1 #include 
2 3 using namespace std; 4 5 const int maxn = 1e5 + 5; 6 7 __int64 cnt,k; 8 int a[maxn],c[maxn]; 9 10 11 void merge(int* a,int first,int mid,int last,int* c) {12 int i = first,j=mid+1;13 int m = mid,n=last;14 int k = 0;15 while(i<=m||j<=n) {16 if(j>n||(i<=m&&a[i]<=a[j])) {17 c[k++] = a[i++];18 }19 else {20 c[k++] = a[j++];21 cnt += (m-i+1);22 }23 }24 for(i=0;i
View Code

 

转载于:https://www.cnblogs.com/TreeDream/p/6822322.html

你可能感兴趣的文章
代码示例_进程
查看>>
Java中关键词之this,super的使用
查看>>
人工智能暑期课程实践项目——智能家居控制(一)
查看>>
前端数据可视化插件(二)图谱
查看>>
kafka web端管理工具 kafka-manager【转发】
查看>>
获取控制台窗口句柄GetConsoleWindow
查看>>
Linux下Qt+CUDA调试并运行
查看>>
51nod 1197 字符串的数量 V2(矩阵快速幂+数论?)
查看>>
OKMX6Q在ltib生成的rootfs基础上制作带QT库的根文件系统
查看>>
zabbix
查看>>
多线程基础
查看>>
完美解决 error C2220: warning treated as error - no ‘object’ file generated
查看>>
使用SQL*PLUS,构建完美excel或html输出
查看>>
SQL Server数据库笔记
查看>>
X-Forwarded-For伪造及防御
查看>>
android系统平台显示驱动开发简要:LCD驱动调试篇『四』
查看>>
Android 高仿微信头像截取 打造不一样的自定义控件
查看>>
Jenkins的初级应用(1)-Publish Over SSH
查看>>
利用正则表达式群发定制邮件
查看>>
【原】RDD专题
查看>>