10810-Ultra-QuickSort【逆序数、树状数组离散化】
来源:互联网 发布:淘宝店铺索引在哪里 编辑:程序博客网 时间:2024/06/05 15:47
求逆序数的模板题
我自己用的是树状数组求得,因为a[i]值最多为999999999,但是最多只有500000个元素,所以需要离散化一下
看网上还有别的算法,感觉都差不多,都是nlogn的算法
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;typedef long long LL;const int maxn = 555555;LL array[maxn];LL hash[maxn];int C[maxn];int n;int lowbit(int x){ return x & -x;}void add(int x,int d){ while(x <= n){ C[x] += d; x += lowbit(x); }}int sum(int x){ int ret = 0; while(x > 0){ ret += C[x]; x -= lowbit(x); } return ret;}void get_hash(){ for(int i = 0; i < n; i++){ LL e = hash[i]; int pos = lower_bound(array,array + n,e) - array; //printf("%d ",pos); hash[i] = pos + 1; }}void solve(){ LL ans = 0; for(int i = 0; i < n; i++){ int e = (int)hash[i]; //printf("%d\n",e); ans += (sum(n) - sum(e - 1)); //printf("%d %d\n",e,ans); add(e,1); } printf("%lld\n",ans);}int main(){ while(scanf("%d",&n) && n){ memset(C,0,sizeof(C)); for(int i = 0; i < n; i++){ scanf("%lld",&array[i]); hash[i] = array[i]; } sort(array,array + n); get_hash(); solve(); } return 0;}
0 0
- 10810-Ultra-QuickSort【逆序数、树状数组离散化】
- Ultra-QuickSort(离散化+树状数组求逆序数)
- 树状数组 Ultra-QuickSort 离散化+逆序数
- 【树状数组】poj2299 Ultra-QuickSort(离散化+树状数组求逆序数)
- poj2299 Ultra-QuickSort&&NYOJ117 求逆序数 (树状数组求逆序对数+离散化)+(归并排序)
- Ultra-QuickSort(树状数组+离散化+求逆序)
- POJ2299 Ultra-QuickSort——树状数组求逆序数+离散化
- poj2299 Ultra-QuickSort(树状数组求逆序数,离散化)
- POJ 2299 Ultra-QuickSort (树状数组求逆序数+离散化)
- poj 2299 Ultra-QuickSort(树状数组求逆序数+离散化)
- poj 2299 Ultra-QuickSort(树状数组求逆序数+离散化)
- poj 2299 Ultra-QuickSort(树状数组求逆序数+离散化)
- 树状数组 离散化 求逆序数POJ 2299Ultra-QuickSort解题报告
- POJ 2299 Ultra-QuickSort(树状数组+离散化—求逆序数)
- poj2299 Ultra-QuickSort(离散化+树状数组求逆序数)
- poj 2299 Ultra-QuickSort 树状数组求逆序数 离散化
- POJ 2299 Ultra-QuickSort (树状数组求逆序数 || 线段树 +离散化)
- 【树状数组--求逆序数(离散化)】poj2299 Ultra-QuickSort
- Objective-C关于分类、扮演、协议
- C++基础系列(1)
- 第3周项目4考了语文数学的学生
- 分支-16. 计算分段函数(10)
- Ogre3d 2.1 源码编译安装教程
- 10810-Ultra-QuickSort【逆序数、树状数组离散化】
- TCP与UDP总结
- BZOJ1007【HNOI2008】水平可见直线
- 题目 1026 又一版 A+B 九度Online Judge
- 32位、64位、以及如何得知自己的电脑是否支持64位的系统
- 线程和 进程间的通信问题
- [机房重构]UML图(包图、类图、用例图、时序图)
- [欧拉函数] uva 11426 GCD - Extreme (II)
- QT学习 之 布局(一) QGridLayout