hdu 4911 归并排序求逆序数
2014-08-06 09:34
351 查看
因为给定一个序列,那么这个序列的逆序数就是一个定值,每次改变都会减少一个逆序数,所以求出总的逆序数后与k比较大小即可
附上代码:
附上代码:
#include<stdio.h> #define N 100005 int a ,tmp ; long long s; void merge(int l,int mid,int r) { int i,j,k; i=l;j=mid+1;k=1; while(i<=mid&&j<=r) { if(a[i]>a[j]) { tmp[k++]=a[j++]; s+=mid-i+1; } else { tmp[k++]=a[i++]; } } while(i<=mid) tmp[k++]=a[i++]; while(j<=r) tmp[k++]=a[j++]; k=1; for(i=l;i<=r;i++) { a[i]=tmp[k++]; } } void mergesort(int l,int r) { if(l==r)return ; int mid=(l+r)>>1; mergesort(l,mid); mergesort(mid+1,r); merge(l,mid,r); } int main() { int n,k,i; while(scanf("%d%d",&n,&k)!=EOF) { s=0; for(i=1;i<=n;i++) scanf("%d",&a[i]); mergesort(1,n); if(s>k) s-=k; else s=0; printf("%I64d\n",s); } return 0; }
相关文章推荐
- hdu 4911 Inversion(归并排序求逆序对数)2014多校训练第5场
- HDU 4911 Inversion (归并排序求逆序对)
- hdu 4911 Inversion(归并排序求逆序对数)2014多校训练第5场
- Inversion (hdu 4911 树状数组 || 归并排序 求逆序对)
- HDU 4911 Inversion【归并排序求逆序数】
- hdu 4911 归并排序求逆序数
- HDU 4911 Inversion(归并排序求逆序对)
- hdu 1394 Minimum Inversion Number (裸树状数组 求逆序数 && 归并排序求逆序数)
- hdu 4911 归并 求逆序对对数(Java实现)
- HDU 4911 - Inversion(树状数组||归并排序)
- HDU - 4911 - Inversion(树状数组逆序数+离散化)
- HDU1394-Minimum Inversion Number-归并排序求最小逆序数
- HDOJ4911 归并排序求逆序数
- HDU 1394 Minimum Inversion Number (归并排序求逆序对)
- [逆序对] 入门 — [HDU] 1394 - Minimum Inversion Number & [HDU] 4911 - Inversion
- HDU 4911 Inversion(归并排序求逆序数)
- 归并排序求逆序数——HDU 4911
- 【归并排序】【逆序数】HDU 5775 Bubble Sort
- ACM 逆序对 hdu 4911 Inversion 离散化 树状数组模板
- [hdu]1394 Minimum Inversion Number -- 暴力求逆序、树状数组求逆序、线段树求逆序、归并排序求逆序