hdu 4911 归并排序求逆序数
来源:互联网 发布:java unexpected token 编辑:程序博客网 时间:2024/05/16 06:25
因为给定一个序列,那么这个序列的逆序数就是一个定值,每次改变都会减少一个逆序数,所以求出总的逆序数后与k比较大小即可
附上代码:
#include<stdio.h>#define N 100005int a[N],tmp[N];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;}
0 0
- hdu 4911 归并排序求逆序数
- hdu 4911 归并排序求逆序数
- HDU 4911 Inversion(归并排序求逆序数)
- 归并排序求逆序数——HDU 4911
- HDU 4911 Inversion【归并排序求逆序数】
- HDU 4911 归并排序求逆序对
- 归并排序,求逆序数
- 归并排序求逆序数
- 归并排序求逆序数
- 归并排序求逆序数
- 归并排序求逆序数
- 归并排序求逆序数
- 归并排序求逆序数
- 归并排序求逆序数
- 归并排序求逆序数
- 归并排序求逆序数
- 归并排序求逆序数
- 归并排序求逆序数
- POJ2031-Building a Space Station -最小生成树
- 链表翻转
- java中的匿名内部类
- 数组大折腾3
- 关闭这些win7服务 让系统跑得更快
- hdu 4911 归并排序求逆序数
- 单词翻转
- Oracle11g服务详细介绍及哪些服务是必须开启的?
- poj 1003
- 比较Collection 和Collections的区别
- Hibernate 工作原理
- BI 和 UI Automation 的学习
- 分享最全国内外公共DNS服务器地址
- IplImg 和 Mat 版本的 facedetect 大对比