hdu 1394 Minimum Inversion Number_归并排序
来源:互联网 发布:乐视如何查看mac码 编辑:程序博客网 时间:2024/05/22 15:47
题目链接
题意:给你一个有0--n-1数字组成的序列,然后进行这样的操作,每次将最前面一个元素放到最后面去会得到一个序列,那么这样就形成了n个序列,那么每个序列都有一个逆序数,找出其中最小的一个输出!
思路:可以暴力,树状树状,线段树,归并排序,这里只给出,暴力和归并
//暴力
#include <iostream>#include<cstdio>#include<cstring>using namespace std;#define N 5010int a[N];long long sum,ans; int main(int argc, char** argv) { int n,i,k,j,ans; while(scanf("%d",&n)!=EOF){ for(i=0;i<n;i++) scanf("%d",&a[i]); sum=0; for(i=0;i<n;i++){ k=0; for(j=i+1;j<n;j++) if(a[i]>a[j]) k++; sum+=k; } ans=sum; for(i=0;i<n;i++){ sum=sum-a[i]+(n-1)-a[i]; if(ans>sum) ans=sum; } printf("%d\n",ans); } return 0;}
//归并排序
#include <iostream>#include<cstdio>#include<cstring>using namespace std;#define MAXN 5010int a[MAXN],c[MAXN],x[MAXN],cnt;long long sum,ans; void MergeSort(int l,int r){int mid,i,j,tmp;if(r>l+1){mid=(l+r)>>1;MergeSort(l,mid);MergeSort(mid,r);tmp=l;for(i=l,j=mid;i<mid&&j<r;){if(a[i]>a[j]){c[tmp++]=a[j++];cnt+=mid-i;}elsec[tmp++]=a[i++];}if(j<r)while(j<r) c[tmp++]=a[j++];elsewhile(i<mid) c[tmp++]=a[i++];for(i=l;i<r;i++)a[i]=c[i];}}int main(int argc, char** argv) { int n,i,k,j,ans; while(scanf("%d",&n)!=EOF){ cnt=0; for(i=0;i<n;i++){ scanf("%d",&x[i]); a[i]=x[i]; } MergeSort(0,n); ans=cnt; for(i=0;i<n;i++){ cnt=cnt-x[i]+(n-1)-x[i]; if(ans>cnt) ans=cnt; } printf("%d\n",ans); } return 0;}
0 0
- 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 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 1394 Minimum Inversion Number 归并求逆序数
- hdu1394 Minimum Inversion Number 归并排序
- hdu 4911 Inversion (归并排序)
- [hdu]1394 Minimum Inversion Number -- 暴力求逆序、树状数组求逆序、线段树求逆序、归并排序求逆序
- HDU 1394 Minimum Inversion Number(循环数组求逆序数)(暴力,归并排序,线段树)
- hdu 1394 Minimum Inversion Number
- blog
- 24.贱啊
- Goldbach's Conjecture
- perl模块之Smart::Comments
- iOS7 UIKit Dynamics
- hdu 1394 Minimum Inversion Number_归并排序
- 游戏对象的实现
- 从AndroidManifest.xml中获取已注册Activity的方法
- IOS设计模式的六大设计原则之单一职责原则(SRP,Single Responsibility Principle)
- "海潮"我的排序算法设计
- 寻找素数对
- Unity3D 窗口裁剪
- jquery操作checkbox,诡异
- 操作系统基本分页存储管理方式