hdu 4911 Inversion--2014 Multi-University Training Contest 5
来源:互联网 发布:java虚拟机 周志明 编辑:程序博客网 时间:2024/05/21 17:31
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4911
Inversion
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 304 Accepted Submission(s): 133
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
We have carefully selected several similar problems for you: 4919 4918 4917 4916 4914
这一道是签到题。因为每次操作都会使逆序数减少。只需要用归并排序算出逆序数,然后判断它与k的大小即可。
#include<iostream>#include<cstring>#include<cmath>#include<cstdio>#include<algorithm>#include<cstdlib>#include<map>#include<set>#include<vector>#include<string>#include<stack>#include<queue>#include<bitset>using namespace std;#define CLR(A) memset(A,0,sizeof(A))typedef long long ll;const int MAX=500000;int L[MAX],R[MAX],a[MAX];void merge(int *a,int p,int mid ,int q,ll &cnt){ int i,j; for(i=p;i<=mid;i++) L[i]=a[i]; for(j=mid+1;j<=q;j++) R[j]=a[j]; i=p;j=mid+1; int w=p; while(i<=mid&&j<=q){ if(L[i]<=R[j]) a[w++]=L[i++]; else{ cnt+=mid-i+1; a[w++]=R[j++]; } } while(i<=mid) a[w++]=L[i++]; while(j<=q) a[w++]=R[j++];}void mergeSort(int *a,int p,int q,ll &cnt){ if(p<q){ int mid=(p+q)>>1; mergeSort(a,p,mid,cnt); mergeSort(a,mid+1,q,cnt); merge(a,p,mid,q,cnt); }}int main(){ int n,k; while(~scanf("%d%d",&n,&k)){ ll cnt=0; for(int i=0;i<n;i++) scanf("%d",&a[i]); mergeSort(a,0,n-1,cnt); cnt=cnt<=k?0:cnt-k; printf("%I64d\n",cnt); } return 0;}
0 0
- 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 HDOJ 4911 Inversion
- hdu4911 Inversion 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-5-Inversion (离散化加线段树)
- 【2014 Multi-University Training Contest 5】 Inversion (离散化,树状数组求逆序数)
- 2017 Multi-University Training Contest 6 solutions 1003 Inversion
- hdu 4861 Couple doubi ---2014 Multi-University Training Contest 1
- hdu 4864 Task---2014 Multi-University Training Contest 1
- 2014 Multi-University Training Contest 1 - 1004 / hdu 4864 Task
- hdu 4902 Nice boat--2014 Multi-University Training Contest 4
- [HDU 4862][2014 Multi-University Training Contest 1]Jump
- hdu 4925 Apple Tree--2014 Multi-University Training Contest 6
- hdu 4927 Series 1--2014 Multi-University Training Contest 6
- POJ 2250 Compromise (DP,最长公共子序列)
- atitit.重装系统需要备份的资料总结 o84..
- 背包问题(一维dp)
- 如何將值delay n個clock? (SOC) (Verilog)
- maven环境搭建
- hdu 4911 Inversion--2014 Multi-University Training Contest 5
- HDOJ 题目2187 悼念512汶川大地震遇难同胞——老人是真饿了(贪心)
- 嵌入式学习的误区及建议(软件硬件)
- 合并果子之哈夫曼树——优先队列解决哈夫曼
- HDU 4911 Iversion(求逆序数)
- index skip scan
- PHP中转换数据类型
- APUE——线程
- 3.5-两个栈模拟一个队列