poj 2299 Ultra-QuickSort
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相关推荐
- 【逆序对】Ultra - Quicksort
POJ 2299 Ultra-QuickSort 只允许交换,比较相邻的元素, 求最少多少次交换可以使得序列有序 冒泡排序的次数-->数列中逆序对的个数减1-->最终为0 -->答案 ...
- POJ 2299 Ultra-QuickSort(线段树+离散化)
题目地址:POJ 2299 这题以前用归并排序做过.线段树加上离散化也能够做.一般线段树的话会超时. 这题的数字最大到10^10次方,显然太大,可是能够利用下标,下标总共仅仅有50w.能够从数字大的開 ...
- poj 2299 Ultra-QuickSort(树状数组求逆序数+离散化)
题目链接:http://poj.org/problem?id=2299 Description In this problem, you have to analyze a particular so ...
- POJ 2299 Ultra-QuickSort(树状数组 + 离散)
链接:http://poj.org/problem?id=2299 题意:给出N个数组成的数列A(0 <= A[i] <= 999,999,999),求该数列逆序对的数量. 分析:题目所谓 ...
- Ultra-QuickSort POJ 2299(归并排序)
http://acm.hust.edu.cn/vjudge/contest/124435#problem/D 题意:给出一个长度为n的数列,你每一次可以随意交换其中两个数字的位置.问你至少交换几次,才 ...
- POJ 2299 Ultra-QuickSort(树状数组+离散化)
题目大意: 就是说,给你一个序列,然后让你求出这个序列有多少个逆序对,所谓逆序对就是对于这个序列中的元素有a[i]>a[j] 且i<j存在. 其实原题是这样说的,给你一个序列,让你用最少的 ...
- POJ - 2299 Ultra-QuickSort(线段树+离散化/归并排序)
题目链接:点击查看 题目大意:给出n个数字,求使用冒泡排序所需要交换的次数 题目分析:这个题n给到了5e5,如果直接冒泡排序的话,的时间复杂度肯定就TLE了,所以不能直接暴力模拟 我们换个思路,这个题 ...
- poj 2299 (归并排序)
给定一个无序的数列,由32位整数组成的,序列长度可达500000,现在通过不断的两两交换,把这个序列排成由小到大的有序序列,问交换的次数是多少. 1 #include<stdio.h> 2 ...
- POJ 2299 - Ultra-QuickSort BIT
题意 给我们一个序列 序列长度小于500000 每个元素 小于999999999 让我们只移动相邻的元素 最终使得他们移动到正好上升序的最小移动次数 分析 我们看 最小的移动次数其实是个幌子 因为你移 ...
最新文章
- 通过sqlserver日志恢复误删除的数据
- 后bat时代,字节未来超越at也不是没可能
- axios不发起请求_axios 发 post 请求的问题
- 如何屏蔽PHP浏览器头信息X-Powered-By
- boost::math模块实现将三次 b 样条插值器用于规则间隔的数据的测试程序
- 变化的和不变的-让自己慢下来(49)
- windows下解决pip安装出错问题
- iOS 跨平台开发,该用 Flutter 还是 Swift?
- scala 函数中嵌套函数_Scala中的VarArgs函数和@varargs批注
- MongoDB笔记(一):MongoDB介绍及Windows下安装
- 网页知识入门-浏览器和网页生成
- PPT制作3D绘图(1)
- Android Studio编写一个手写字体识别程序
- 论文解读 - 城市自动驾驶车辆运动规划与控制技术综述 (第1部分)
- 如何对 iOS App 内购买项目进行测试?
- 集成电路技术——如何制造芯片(1)
- Mybatis if test中字符串比较和Mybatis的like查询
- 各个国家的utf-8/unicode编码范围,印度语(天城文)utf-8编码范围
- matlab支路参数矩阵,哪位大神看看这个程序呀,参数下面给了
- 给echarts折线图赋值
热门文章
- 机器学习是什么——周志华
- CF1202 - E. You Are Given Some Strings...(AC自动机)
- C++ 调试帮助简介
- linux dns 攻击,DNSlog攻击技巧 | CN-SEC 中文网
- [BUUCTF-pwn]——gyctf_2020_borrowstack
- 15.4.2:可变参数与泛型化方法
- java对象锁与类锁区别
- velocity用法简单实例说明 .
- Oracle的CASE语句和表达式
- LeetCode-反转链表