HDU 4911 Inversion【归并排序||线段树】
来源:互联网 发布:天猫和淘宝的盈利模式 编辑:程序博客网 时间:2024/05/18 18:15
Inversion
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 5254 Accepted Submission(s): 1849
Problem Description
bobo has a sequence a1,a2,…,an. He is allowed to swap two adjacent numbers for no more than k times.
Find the minimum number of inversions after his swaps.
Note: The number of inversions is the number of pair (i,j) where
Input
The input consists of several tests. For each tests:
The first line contains 2 integers n,k (1≤n≤105,0≤k≤109). The second line contains n integers a1,a2,…,an (0≤ai≤109).
Output
For each tests:
A single integer denotes the minimum number of inversions.
Sample Input
3 1
2 2 1
3 0
2 2 1
Sample Output
1
2
Author
Xiaoxu Guo (ftiasch)
Source
2014 Multi-University Training Contest 5
Recommend
We have carefully selected several similar problems for you: 6242 6241 6240 6239 6238
题意:求逆序数-K和0比较。
算是吃了清题慢的亏了,杭电新生赛也遇到了求逆序数的题,悔死!
归并排序:
#include<iostream>#include<cstring>#include<iomanip>#include<cstdio>#include<algorithm>using namespace std;#define ll long long intconst int maxn = 1e5 + 10;int s[maxn], A[maxn];int n, k;ll sum;void merge(int L, int R){ int mid = (L + R) / 2; int i = 0, j = 0, k = 0; for (i = L, j = mid; i < mid&&j < R;) { if (s[j] < s[i]) { sum += mid - i; A[k++] = s[j]; j++; } else { A[k++] = s[i]; i++; } } while (i < mid) { A[k++] = s[i]; i++; } while (j < R) { A[k++] = s[j]; j++; } memcpy(s + L, A, sizeof(int) * k);}void merge_sort(int L, int R){ if (R - L < 2) return; int mid = (L + R) / 2; merge_sort(L, mid); merge_sort(mid, R); merge(L, R);}int main(){ while (~scanf("%d%d", &n, &k)) { for (int i = 0; i < n; i++) { scanf("%d", &s[i]); } sum = 0; merge_sort(0, n); printf("%lld\n", max(1ll * 0, sum - k)); } return 0;}
- HDU 4911 Inversion【归并排序||线段树】
- HDU 1394 Minimum Inversion Number【线段树&&归并排序】
- HDU 1394 Minimum Inversion Number( 归并排序 & 线段树 )
- [HDU 1394]Minimum Inversion Number(归并排序/线段树)
- hdu 4911 Inversion (归并排序)
- Hdu 4911 Inversion(裸归并排序)
- hdu 1394 Minimum Inversion Number 逆序数 线段树&归并排序
- HDU 1394 Minimum Inversion Number【线段树,归并排序,树状数组】
- HDU 1394 Minimum Inversion Number(线段树/归并排序求逆序对数)
- HDU 1394 Minimum Inversion Number(求逆序对+线段树||归并排序)
- hdu 1394 Minimum Inversion Number(线段树)【归并排序模板】
- HDU-1394-Minimum Inversion Number(暴力||归并排序||线段树||树状数组)
- hdu 4911 Inversion(归并)
- (hdu1394)Minimum Inversion Number (树状数组/线段树/归并排序)
- [hdu]1394 Minimum Inversion Number -- 暴力求逆序、树状数组求逆序、线段树求逆序、归并排序求逆序
- HDU 1394 Minimum Inversion Number(循环数组求逆序数)(暴力,归并排序,线段树)
- HDU 4911 Inversion(归并排序求逆序数)
- HDU 4911 Inversion (归并排序求逆序对)
- Linux用户态和内核态
- Dart语言语法特性简介(1)
- ES6 Map类型
- 超实数及其标准部分
- 前端框架技术--jQuery基础应用
- HDU 4911 Inversion【归并排序||线段树】
- 僵死进程
- java网络编程之Netty实战数据通信(七)
- 对vector/string执行insert/erase操作后迭代器的情况说明
- matplotlib命令与格式:图例legend语法及设置
- c语言中部分字符串操作函数
- Mybatis Collection查询集合只出现一条数据
- 基于FullCalendar插件的简单个人日程安排系统(1)
- ZigZag Conversion