POJ 2299 Ultra-QuickSort
来源:互联网 发布:西科大网络教育怎么样 编辑:程序博客网 时间:2024/06/05 06:45
http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=site888_3_pg&wd=poj2299&rsv_pq=c6250e92000864c1&rsv_t=a305QkcqHDKN9UxMSMRUmR24ngB6j6l8pUc5B2XnXS887NCqpOicwHRtO2V6KerME6DA&rsv_enter=1&inputT=719&rsv_sug1=14&rsv_sug3=13&rsv_sug2=0&rsv_sug4=1535
一开始按照常规算法做,发现不行,因为可能导致树状数组空间开的太大999999999了都。参考了一下网上的答案,用到了所谓的离散化,我咋感觉和hash差不多。
这个博文把这个问题讲的特别详细了:http://wenku.baidu.com/link?url=AeZsivoojqQq74cwFq_58D6rL7cXXT0joHFMmYvWgY_U6VuNxyyzgyKYTl7maHcnPrbXhcQqL8_QI08G5Me-6D-kiXg2rm_K-4ObtD-Twom
下面自然而然贴出ac代码:
#include<string.h>#include<iostream>#include<stdio.h>#include<algorithm>using namespace std;const int M=500002;int cnt[M];int dic[M];class A{public: int val,id;};A per[M];bool cmp(A a, A b){ return a.val<b.val;}int lowbit(int x){ return x&(-x);}long long sum(int x){ long long s=0; while(x>0) { s+=cnt[x]; x-=lowbit(x); } return s;}void add(int x,int val){ while(x<=M) { cnt[x]+=val; x+=lowbit(x); }}int main(){ int n; long long result; while(cin>>n,n) { int x,y; memset(cnt,0,sizeof(cnt)); memset(dic,0,sizeof(dic)); result=0; for(int i=1; i<=n; i++) { scanf("%d",&per[i].val); per[i].id=i; } sort(per+1,per+n+1,cmp); for(int m=1; m<=n; m++) dic[per[m].id]=m; for(int k=1; k<=n; k++) { add(dic[k],1); result+=k-sum(dic[k]); } printf("%lld\n",result); } 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 2299Ultra-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 2299 Ultra-QuickSort
- POJ 2299 Ultra-QuickSort
- OpenLayers 3 之 地图图层数据来源(ol.source)详解
- LeetCode 26 - Remove Duplicates from Sorted Array
- cx_Oracle 中文汉字乱码有关问题解决
- Android客户端向服务器端传值——登录实现(一)
- 直接获取键盘字符命令(游戏方向操作实例)
- POJ 2299 Ultra-QuickSort
- C++构造与析构(7) - 数据成员的初始化
- STL库之队列的简单应用
- 黑马程序员——梦想启程的地方
- 【数据库】数据库视频总结
- NPM在ASP.NET 5中的说明
- 信息可视化图表设计指南
- 第12周 程序填空-多重继承
- windows窗体及控件