hdu4911 Inversion-归并排序
解题思路:
如果原序列的逆序对数大于交换次数,那么最少的逆序对数量就是原序列逆序对-交换次数。
如果原序列的逆序对数小于等于交换次数,那么最少的逆序对数量为0,因为交换次数超过逆序对数,可以把这些逆序对全部消除。
代码如下:
#include <iostream>
using namespace std;const int N = 100010;
typedef long long LL;
LL cnt = 0;
LL a[N];
LL w[N];
int n, p;
void merge_sort(int l, int r) {if (l >= r)return ;int mid = (l + r) >> 1;merge_sort(l, mid);merge_sort(mid + 1, r);int k = 0, i = l, j = mid + 1;while (i <= mid && j <= r) {if (a[i] <= a[j])w[k++] = a[i++];else {cnt += mid - i + 1;w[k++] = a[j++];}}while (i <= mid)w[k++] = a[i++];while (j <= r)w[k++] = a[j++];for (int i = l, j = 0; i <= r; i++, j++)a[i] = w[j];
}int main() {while (cin >> n >> p) {cnt = 0;for (int i = 0; i < n; i++)cin >> a[i];merge_sort(0, n - 1);if (cnt <= p)cout << "0" << endl;elsecout << cnt - p << endl;}return 0;
}
hdu4911 Inversion-归并排序相关推荐
- HDU4911 Inversion 解题报告
题意:求逆序对 解题思路:1)树状数组 + 离散化 解题代码: 1 // File Name: a.cpp 2 // Author: darkdream 3 // Created Time: 2014 ...
- ICPC程序设计题解书籍系列之九:罗勇军《算法竞赛入门到进阶》
罗书<算法竞赛入门到进阶>题目一览 第1章 算法竞赛概述 HDU1000 HDU1089-HDU1096 A+B for Input-Output Practice (I)-(VIII)( ...
- TYUT-A专题题解(一)
TYUT-A专题题解(一) 01A Ad Hoc UVA353 LA5247 Pesky Palindromes[回文] - 海岛Blog - CSDN博客 UVA947 Master Mind He ...
- 逆序数2 HDOJ 1394 Minimum Inversion Number
题目传送门 1 /* 2 求逆序数的四种方法 3 */ 1 /* 2 1. O(n^2) 暴力+递推 法:如果求出第一种情况的逆序列,其他的可以通过递推来搞出来,一开始是t[1],t[2],t[3]. ...
- [HDU1394]Minimum Inversion Number
题目:Minimum Inversion Number 链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 分析: 1)先对序列求逆序对的数目,归并排序 ...
- 算法分析-分治 归并排序,递归插入排序,二分查找
反正分治的套路就是 相同子问题,递归做,我之前有介绍express源码,其中的中间件使用就是用next()函数一直递归,想看的看我的express源码分析: 分治3步骤: 分解 处理 归并 下面给出归 ...
- Count Inversion逆序对数问题
逆序对数问题Count Inversion Problem Description Recall the problem of finding the number of inversions. As ...
- 分治算法的设计思想(二分检索、二分归并排序)
分治策略思想: 将原问题划分或者归结为规模较小的子问题. 递归或迭代求解每一个问题. 将子问题的解综合得到原问题的解. 性质: 子问题与原问题具有相同的性质. 子问题的求解彼此独立. 划分时子问题的规 ...
- LightHouse/归并排序
灯塔(LightHouse) 题目见https://dsa.cs.tsinghua.edu.cn/oj/problem.shtml?id=1144 最近复习DSA,便在看邓老师的mooc,顺便做做配套 ...
- 归并排序(代码注释超详细)
归并排序: (复制粘贴百度百科没什么意思),简单来说,就是对数组进行分组,然后分组进行排序,排序完最后再整合起来排序! 我看了很多博客,都是写的8个数据呀什么的(2^4,分组方便),我就想着,要是10 ...
最新文章
- Oracle11g新特性导致空表不能导出问题
- jQuery1.6以上attr改用prop
- macbookpro升级后打不开eclipse_维修分享——面容坏升级iOS13系统后 导致前后摄像头都打不开...
- 网络安全 / crt、pem、pfx、cer、key 作用及区别
- C++ 是一门难学易用的语言!
- leetcode 300. 最长上升子序列
- 案例:演示<jsp:include>动作元素
- 小明利用计算机软件绘制函数,2019年人大附中初二下期末模拟数学试题
- OpenGL学习笔记一
- 最全的LBS手机定位技术说明
- Python3-网页爬取-批量爬取贴吧页面数据
- C语言:由键盘任意输入1个整形数据(小于10亿,位数不限),将其倒置,如:输入12345,则输出54321。
- 恐怖的广告推送。其实,我们每天都在“裸奔”!
- 心物各东西:基因,文化和心灵
- 指派问题——匈牙利法
- 分享一下微信域名防封方案
- 动态规划---01背包问题详解
- 多元统计分析——数据降维——因子分析(FA)
- python数据库选择
- 转录组表达量计RPKM、FPKM、TPM说明
热门文章
- Android studio之提示Failed to resolve: com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.46
- C和指针之字符串之strncpy、strncat、strncmp
- Android之Base64
- amap vueamap 与_在vue中使用高德地图vue-amap
- 使其正序排序 打印一串数字_JavaScript计数排序算法
- php支持cs吗,关于composer、phpmd和phpcs于windows中的安装与使用方法
- 当代成年人的生活状态......
- 别薅了别薅了!!!再薅就真的被薅秃了!!
- 如何判断一个人是不是值得深入交流?
- 13个圆可以画什么?数学与艺术完美邂逅!原来数学也可以这么美