Hdu 4911 Inversion(裸归并排序)
来源:互联网 发布:李炎恢 javascript 编辑:程序博客网 时间:2024/05/16 17:58
分析:你可以交换k次相邻的两个数,所以呢,最后逆序对数-k就ok,特判cnt-k<0 水水更健康~
代码:
#include<cstdio>#include<cstring>using namespace std;//#define testconst int maxn = 100000+10;long long cnt;void marge_sort(int *A,int x,int y,int *T){if(y-x>1){int m=x+(y-x)/2;int p=x,q=m,i=x;marge_sort(A,x,m,T);marge_sort(A,m,y,T);while( p<m || q<y ){if( q>=y || (p<m && A[p]<=A[q]))T[i++]=A[p++];elseT[i++]=A[q++], cnt += m-p;}for(int i=x;i<y;i++)A[i]=T[i];// 这里写成了 0~n wrong了一次 }}int main(){long long n,k; // 用 long long int A[maxn],T[maxn]; #ifdef testfreopen("Hdu 4911 Inversion test.txt","r",stdin);#endifwhile(scanf("%lld%lld",&n,&k)!=EOF){// k次调换可以使得逆序数-k cnt=0;for(int i=0;i<n;i++)scanf("%d",&A[i]);marge_sort(A,0,n,T);// 注意marge_sort()处理的是左闭右开 if(cnt-k<0)printf("0\n");elseprintf("%lld\n",cnt-k);}return 0;}
0 0
- Hdu 4911 Inversion(裸归并排序)
- hdu 4911 Inversion (归并排序)
- HDU 4911 Inversion (归并排序求逆序对)
- HDU 4911 Inversion(归并排序求逆序对)
- HDU 4911 Inversion【归并排序||线段树】
- hdu 4911 Inversion(归并)
- HDU 4911 Inversion(归并排序求逆序数)
- Inversion (hdu 4911 树状数组 || 归并排序 求逆序对)
- HDU 4911 Inversion【归并排序求逆序数】
- HDU 1394 Minimum Inversion Number( 归并排序 & 线段树 )
- [HDU 1394]Minimum Inversion Number(归并排序/线段树)
- hdu 4911 Inversion(归并排序求逆序对数)2014多校训练第5场
- hdu 1394 Minimum Inversion Number_归并排序
- HDU 4911 Inversion(归并求逆序对)
- HDU 1394 Minimum Inversion Number (归并排序求逆序对)
- HDU 1394 Minimum Inversion Number(线段树/归并排序求逆序对数)
- HDU 1394 Minimum Inversion Number(求逆序对+线段树||归并排序)
- hdu 1394 Minimum Inversion Number(线段树)【归并排序模板】
- Java中不能被继承的类
- Zookeeper集群配置
- (翻译,解读)TWO-STAGEPOOLING OF DEEP CONVOLUTIONAL FEATURES FOR IMAGE RETRIEVAL
- ordinal parameter mismatch
- CodeForces 735C Tennis Championship
- Hdu 4911 Inversion(裸归并排序)
- APP语言设置
- 对称密码之3DES
- 原生JS的Ajax方法
- 1.3.2循环链表,双向链表
- 历届试题 矩阵翻硬币
- Windows 10下安装配置Caffe并支持GPU加速
- Tomcat7配置
- PostgreSQL教程 -part2高级特性