hdu4911 Inversion 2014 Multi-University Training Contest 5
来源:互联网 发布:淘宝招聘信息怎么写 编辑:程序博客网 时间:2024/05/07 12:31
Inversion
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 137 Accepted Submission(s): 57
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 1≤i<j≤n and ai>aj.
Find the minimum number of inversions after his swaps.
Note: The number of inversions is the number of pair (i,j) where 1≤i<j≤n and ai>aj.
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).
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.
A single integer denotes the minimum number of inversions.
Sample Input
3 12 2 13 02 2 1
Sample Output
12
Author
Xiaoxu Guo (ftiasch)
Source
2014 Multi-University Training Contest 5
Recommend
#include <iostream>#include <cstring>#include <cstdio>#include <cmath>#include <algorithm>#include <vector>#include <queue>#include <cstdlib>#include <limits>#define inf 0x3f3f3f3fusing namespace std;__int64 cnt;void merge(__int64 A[], int p, int q, int r) { int n1 = q - p + 1; int n2 = r - q; __int64 L[n1 + 1]; __int64 R[n2 + 1]; for(int i = 0; i < n1; i++) L[i] = A[p + i]; for(int i = 0; i < n2; i++) R[i] = A[q + 1 + i]; L[n1] = numeric_limits<__int64>::max(); R[n2] = numeric_limits<__int64>::max(); int i = 0, j = 0; for(int k = p; k <= r; k++) { if(L[i] <= R[j]) { A[k] = L[i]; i++; } else { A[k] = R[j]; j++; cnt += n1 - i; } }}void mergeSort(__int64 A[], int p, int r) { if(p >= r) return ; int q = (p + r) / 2; mergeSort(A, p, q); mergeSort(A, q + 1, r); merge(A, p, q, r);}int main(){ int n,k; __int64 a[100005]; while(scanf("%d%d",&n,&k)!=EOF){ for(int i=0;i<n;i++){ scanf("%I64d",&a[i]); } cnt = 0; mergeSort(a, 0, n - 1); printf("%I64d\n",max(cnt-k,0ll)); } return 0;}
0 0
- hdu4911 Inversion 2014 Multi-University Training Contest 5
- 2014 Multi-University Training Contest 5 HDOJ 4911 Inversion
- hdu 4911 Inversion--2014 Multi-University Training Contest 5
- hdu 4911 Inversion ( 2014 Multi-University Training Contest 5)
- hdu 4911 Inversion 2014 Multi-University Training Contest 5
- 2014-multi-university-training-contest-5-Inversion (离散化加线段树)
- 【2014 Multi-University Training Contest 5】 Inversion (离散化,树状数组求逆序数)
- 2017 Multi-University Training Contest 6 solutions 1003 Inversion
- hdu4915 Parenthese sequence 2014 Multi-University Training Contest 5
- 2014 Multi-University Training Contest 5 HDOJ 4920 Matrix multiplication
- hdu4920 Matrix multiplication 2014 Multi-University Training Contest 5
- hdu 4915 Parenthese sequence--2014 Multi-University Training Contest 5
- hdu 4920 Matrix multiplication--2014 Multi-University Training Contest 5
- hdu 4920 Matrix multiplication 2014 Multi-University Training Contest 5
- 2014 Multi-University Training Contest 1小记
- 2014 Multi-University Training Contest 1
- 2014 Multi-University Training Contest 1
- 2014 Multi-University Training Contest 1
- 关于qt下使用google breakpad的相关问题
- 开源将我洗脑
- 命运 (HDU 2571)解题报告(DP - 边界数据处理!韩菱纱乱入~)
- 曾经负责的2个项目,感觉挺好的。
- springMVC 初始化静态参数值
- hdu4911 Inversion 2014 Multi-University Training Contest 5
- 杭电2037今年暑假不AC
- 再说下自己做过的一些系统,呵呵
- 推荐系统综述——只谈感受不谈理论
- hdu 4915 Parenthese sequence
- 引导页面的移动箭头效果 guide arrow animation
- 高质量C/C++编程指南 阅读笔记(四)类的构造函数、析构函数与赋值函数
- linux命令后台运行
- 错误-Sql Server 备份数据库时提示“无法打开备份设备”