http://poj.org/problem?id=2299

归并排序

代码:

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<vector>
#include<set>
#include<map>
#include<string>
#include<queue>
#include<stack>
#include <iomanip>
using namespace std;
#define LL long long
#define sint short int
const int INF=0x3f3f3f3f;
//priority_queue<int,vector<int>,greater<int> >qt;
const int N=500005;
int a[N],b[N];
LL ans;
void mysort(int l,int r)
{if(l==r)return ;int mid=(l+r)>>1;mysort(l,mid);mysort(mid+1,r);int i,j,k=l;for(i=l,j=mid+1;i<=mid||j<=r;++k){if(i>mid){b[k]=a[j];++j;continue;}if(j>r){b[k]=a[i];++i;continue;}if(a[i]<a[j]){b[k]=a[i];++i;}else{b[k]=a[j];ans=ans+(LL)(j-k);++j;}}for(int x=l;x<=r;++x)a[x]=b[x];return ;
}
int main()
{//freopen("data.in","r",stdin);int n;while(scanf("%d",&n)!=EOF,n){for(int i=0;i<n;++i)scanf("%d",&a[i]);ans=0;mysort(0,n-1);cout<<ans<<endl;}return 0;
}

  

转载于:https://www.cnblogs.com/liulangye/archive/2012/12/07/2807613.html

poj 2299 Ultra-QuickSort相关推荐

  1. 【逆序对】Ultra - Quicksort

    POJ 2299 Ultra-QuickSort 只允许交换,比较相邻的元素, 求最少多少次交换可以使得序列有序 冒泡排序的次数-->数列中逆序对的个数减1-->最终为0 -->答案 ...

  2. POJ 2299 Ultra-QuickSort(线段树+离散化)

    题目地址:POJ 2299 这题以前用归并排序做过.线段树加上离散化也能够做.一般线段树的话会超时. 这题的数字最大到10^10次方,显然太大,可是能够利用下标,下标总共仅仅有50w.能够从数字大的開 ...

  3. poj 2299 Ultra-QuickSort(树状数组求逆序数+离散化)

    题目链接:http://poj.org/problem?id=2299 Description In this problem, you have to analyze a particular so ...

  4. POJ 2299 Ultra-QuickSort(树状数组 + 离散)

    链接:http://poj.org/problem?id=2299 题意:给出N个数组成的数列A(0 <= A[i] <= 999,999,999),求该数列逆序对的数量. 分析:题目所谓 ...

  5. Ultra-QuickSort POJ 2299(归并排序)

    http://acm.hust.edu.cn/vjudge/contest/124435#problem/D 题意:给出一个长度为n的数列,你每一次可以随意交换其中两个数字的位置.问你至少交换几次,才 ...

  6. POJ 2299 Ultra-QuickSort(树状数组+离散化)

    题目大意: 就是说,给你一个序列,然后让你求出这个序列有多少个逆序对,所谓逆序对就是对于这个序列中的元素有a[i]>a[j] 且i<j存在. 其实原题是这样说的,给你一个序列,让你用最少的 ...

  7. POJ - 2299 Ultra-QuickSort(线段树+离散化/归并排序)

    题目链接:点击查看 题目大意:给出n个数字,求使用冒泡排序所需要交换的次数 题目分析:这个题n给到了5e5,如果直接冒泡排序的话,的时间复杂度肯定就TLE了,所以不能直接暴力模拟 我们换个思路,这个题 ...

  8. poj 2299 (归并排序)

    给定一个无序的数列,由32位整数组成的,序列长度可达500000,现在通过不断的两两交换,把这个序列排成由小到大的有序序列,问交换的次数是多少. 1 #include<stdio.h> 2 ...

  9. POJ 2299 - Ultra-QuickSort BIT

    题意 给我们一个序列 序列长度小于500000 每个元素 小于999999999 让我们只移动相邻的元素 最终使得他们移动到正好上升序的最小移动次数 分析 我们看 最小的移动次数其实是个幌子 因为你移 ...

最新文章

  1. 通过sqlserver日志恢复误删除的数据
  2. 后bat时代,字节未来超越at也不是没可能
  3. axios不发起请求_axios 发 post 请求的问题
  4. 如何屏蔽PHP浏览器头信息X-Powered-By
  5. boost::math模块实现将三次 b 样条插值器用于规则间隔的数据的测试程序
  6. 变化的和不变的-让自己慢下来(49)
  7. windows下解决pip安装出错问题
  8. iOS 跨平台开发,该用 Flutter 还是 Swift?
  9. scala 函数中嵌套函数_Scala中的VarArgs函数和@varargs批注
  10. MongoDB笔记(一):MongoDB介绍及Windows下安装
  11. 网页知识入门-浏览器和网页生成
  12. PPT制作3D绘图(1)
  13. Android Studio编写一个手写字体识别程序
  14. 论文解读 - 城市自动驾驶车辆运动规划与控制技术综述 (第1部分)
  15. 如何对 iOS App 内购买项目进行测试?
  16. 集成电路技术——如何制造芯片(1)
  17. Mybatis if test中字符串比较和Mybatis的like查询
  18. 各个国家的utf-8/unicode编码范围,印度语(天城文)utf-8编码范围
  19. matlab支路参数矩阵,哪位大神看看这个程序呀,参数下面给了
  20. 给echarts折线图赋值

热门文章

  1. 机器学习是什么——周志华
  2. CF1202 - E. You Are Given Some Strings...(AC自动机)
  3. C++ 调试帮助简介
  4. linux dns 攻击,DNSlog攻击技巧 | CN-SEC 中文网
  5. [BUUCTF-pwn]——gyctf_2020_borrowstack
  6. 15.4.2:可变参数与泛型化方法
  7. java对象锁与类锁区别
  8. velocity用法简单实例说明 .
  9. Oracle的CASE语句和表达式
  10. LeetCode-反转链表