UVa 10810 Ultra-QuickSort(逆序对)
来源:互联网 发布:上海旋转餐厅知乎 编辑:程序博客网 时间:2024/06/08 20:00
题目描述:给出n个整数,求其逆序对个数。
数据范围:n<500,000, 整数<999,999,999
分析:使用归并排序求逆序对
/*PROG: UVa10810*/#include <cstdio>#include <cstring>#include <cstdlib>using namespace std;#define MAXN 500010int a[MAXN], b[MAXN], c[MAXN];#define DEBUG 1#define LOG(...) do { if (DEBUG) fprintf(stderr, __VA_ARGS__); } while(0)typedef long long LL;LL Merge(int l, int r) {if (l >= r) return 0;int m = (l+r) >> 1;LL ret = Merge(l, m)+Merge(m+1,r);memcpy(b, a+l, sizeof(int)*(m+1-l));memcpy(c, a+m+1, sizeof(int)*(r-m));int i, j;i = j = 0;for (int k = l; k <= r; ++k) {if (i == m+1-l) a[k] = c[j++];else if (j == r-m) a[k] = b[i++], ret += r-m;else if (b[i] > c[j]) a[k] = c[j++];else a[k] = b[i++], ret += j;}return ret;}int main(void) {int n;while (scanf("%d", &n), n) {for (int i = 0; i < n; ++i)scanf("%d", a+i);printf("%lld\n", Merge(0, n-1));}return 0;}
0 0
- UVa 10810 Ultra-QuickSort(逆序对)
- 【POJ2299】Ultra-Quicksort-逆序对
- [POJ2299] Ultra-QuickSort - 逆序对
- UVA 10810 - Ultra-QuickSort(树状数组+离散化求逆序对)
- UVa 10810 - Ultra-QuickSort
- uva 10810 - Ultra-QuickSort(归并求逆序数)
- poj 2299 Ultra-QuickSort(逆序对)
- poj2299(Ultra-QuickSort)求逆序对
- POJ 2299 - Ultra-QuickSort 统计逆序对
- POJ 2299 Ultra-QuickSort(求逆序对)
- poj 2299 Ultra-QuickSort 求逆序对
- poj 2299 Ultra-QuickSort(求逆序对)
- uva 10810 - Ultra-QuickSort(排序)
- 10810 - Ultra-QuickSort(求逆序数)
- POJ2299 Ultra-QuickSort 归并排序求逆序数对
- [算法] doj 1067 归并法求逆序对 Ultra-QuickSort
- 【POJ】【P2299】【Ultra-QuickSort】【题解】【求逆序对】
- [POJ 2299] Ultra-QuickSort (逆序对的数目)
- JavaScript 标准对象
- python3 如何读写配置文件(ini)
- How to install linux with a usb device
- Deeply learned face representations are sparse, selective, and robust
- Android消息机制Handler源码简单解析
- UVa 10810 Ultra-QuickSort(逆序对)
- activiti获取启动流程的图片和xml
- javaWeb之Servlet
- Android详情页+定位评论区
- windows 安装mac os 10.11
- 操作系统基础知识
- Eclipse常用的快捷键
- Java基础-02总结关键字,标识符,注释,常量进制,变量数据类型
- Oracle 改写listagg 4000 varchar 的限制的方法 clob