POJ 2299-Ultra-QuickSort (树状数组+离散化)
来源:互联网 发布:淘宝送一个月优酷会员 编辑:程序博客网 时间:2024/05/18 09:20
题目:http://poj.org/problem?id=2299
思路: 树状数组求和,求逆序数对。
CODE:
#include <iostream>#include <stdio.h>#include <algorithm>const int M=500005;using namespace std;typedef long long ll;int a[M],sa[M];int c[M];bool cmp(int x,int y){ return x<y;}int lowbit(int xx){ return xx&(-xx);}int sum(int x){ int s=0; while(x > 0) { s+=c[x]; x-=lowbit(x); } return s;}void add(int x,int p,int NN){ while(x <= NN) { c[x]+=p; x += lowbit(x); }}int main(){ //freopen("in.in","r",stdin); int N; while(~scanf("%d",&N),N) { fill(c,c+N+1,0); fill(a,a+N+1,0); fill(sa,sa+N+1,0); for(int i=1;i<=N;i++) { scanf("%d",&a[i]); sa[i]=a[i]; } sort(sa,sa+N+1,cmp); ll ans=0; for(int i=1;i<=N;i++) { int pl=lower_bound(sa+1,sa+N+1,a[i])-sa; add(pl,1,N); ans +=(ll)(sum(N) - sum(pl)); } printf("%lld\n",ans); } return 0;}
0 0
- POJ-2299 Ultra-QuickSort(树状数组)(离散化)
- poj 2299 Ultra-QuickSort(离散化+树状数组)
- POJ 2299 Ultra-QuickSort(树状数组+离散化)
- POJ 2299 Ultra-QuickSort(树状数组+离散化处理)
- POJ 2299-Ultra-QuickSort (树状数组+离散化)
- POJ 2299 Ultra-QuickSort (离散化+树状数组)
- POJ 2299 Ultra-QuickSort (树状数组 + 离散化)
- POJ 2299 Ultra-QuickSort (树状数组+离散化)
- 【Poj】-2299-Ultra-QuickSort(树状数组,离散化, 好)
- poj 2299 Ultra-QuickSort(树状数组+离散化)
- POJ 2299 Ultra-QuickSort (树状数组+离散化)
- POJ Ultra-QuickSort (树状数组+离散化)
- POJ 2299 Ultra-QuickSort【树状数组+离散化】
- POJ 2299 Ultra-QuickSort(树状数组+离散化)
- poj 2299 Ultra-QuickSort 离散化+树状数组
- POJ 2299 Ultra-QuickSort(树状数组+离散化)
- Ultra-QuickSort - POJ 2299 树状数组+离散化
- POJ 2299 Ultra-QuickSort(树状数组+离散化)
- 集训日志(三) 动态规划
- OC中的instancetype和id区别
- android面试准备2
- Oracle建表主键策略
- 欧拉回路的典型应用
- POJ 2299-Ultra-QuickSort (树状数组+离散化)
- poj 2942 求点双联通+二分图判断奇偶环+交叉染色法判断二分图
- J2EE之初识JSP
- [亲测] 解决在 ubuntu14.04 安装完 vmware 后,启动出现下列问题的解决方案
- DataSet.Tables[0].Rows[0][1]的含义
- cocos2d-x环境搭建
- android 4.0.4系统下实现apk的静默安装和启动
- 理论知识整理(C语言)
- 解决ultravnc在win2008 R2下CTRL+ALT+DELETEA组合键发送失败的问题