题目链接:http://poj.org/problem?id=2299

这道题是求逆序数的,离散化+树状数组;

注意的地方:1、离散化的比较函数;2、结果会爆int,所以必须用__int64或者是long long 类型来存储结果;

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;const int MAXN=500000;
int n_case;
int B[MAXN+10],C[MAXN+10];
struct node
{int index,val;
} A[MAXN+10];int cmp(const void * a,const void * b)     //离散化比较函数模板;这里解决了一些相同的情况
{return ((node *)a)->val - ((node *)b) ->val;
}int lowbit(int a)    //树状数组的关键地方;
{return (-a)&a;
}void insert(int x)
{for(int i=x; i<MAXN; i+=lowbit(i)){C[i]++;}
}int getSum(int x)
{int ans=0;for(int i=x; i>0; i-=lowbit(i))   ans+=C[i];return ans;
}int main()
{//freopen("in.txt","r",stdin);long long sum;           //用long long存储计算结果;while(scanf("%d",&n_case)&&n_case!=0){int temp;sum=0;for(int i=1; i<=n_case; i++){scanf("%d",&temp);A[i].val=temp;A[i].index=i;}qsort(A+1,n_case,sizeof(A[0]),cmp);for(int i=1; i<=n_case; i++){B[A[i].index]=i;}memset(C,0,sizeof(C));for(int i=n_case; i>0; i--)   //这里从最后一个开始,查找放进树状数组C里比当前元素小的元素,即 前面所有之和;因为树状数组存储的是逆序数;{sum+=getSum(B[i]);insert(B[i]);}printf("%I64d\n",sum);}return 0;
}

  

转载于:https://www.cnblogs.com/Chinese-Coder-Clarence/articles/2146963.html

ACM PKU 2299 Ultra-QuickSort相关推荐

  1. 【逆序对】Ultra - Quicksort

    POJ 2299 Ultra-QuickSort 只允许交换,比较相邻的元素, 求最少多少次交换可以使得序列有序 冒泡排序的次数-->数列中逆序对的个数减1-->最终为0 -->答案 ...

  2. ACM 1740 A New Stone Game http://acm.pku.cn/JudgeOnline/problem?id=1740

    题目大意:有N堆石头,每堆石头数目在1到100之间,最多有10堆.两人分别取走石头.取石头的规则是:每次只能从1堆中取,每次取走至少1个.取过后还可以把这堆的石头任意分配到其它堆上(这些堆必须有石头, ...

  3. PKU ACM 1258 Agri-Net http://acm.pku.edu.cn/JudgeOnline/problem?id=1258

    熟悉了prim算法后这样的题目在十分钟内真的可以解决!最小生成树,prim真的很有用! #include <iostream> using namespace std; const int ...

  4. ACM PKU 1192 最优连通子集

    题目描述:http://poj.org/problem?id=1192 说实话,这道题我看了半天恁是没有看懂什么意思,最后看人家代码写了一个深搜,还是看代码容易理解一点,也不知道是中文的说明有问题还是 ...

  5. Biorhythms ACM PKU http://acm.pku.cn/JudgeOnline/problem?id=1006

    本题可以参考Wikipedia上线性同余同方程的解法,方法很简单手算一会就出来了.也可以参考中国同余定理:就这么多,下面我展示我的代码:#include <iostream> using ...

  6. pku acm 2140 Herd Sums http://acm.pku.edu.cn/JudgeOnline/problem?id=2140

    2140代码短小精悍:#include<stdio.h> int main() { int cnt=0,i; long s; scanf("%ld",&s); ...

  7. ACM PKU 2663 Tri Tiling http://acm.pku.edu.cn/JudgeOnline/problem?id=2663

    这题开始没有思路,后来看了流牛的解题报告才写出来: 递推公式我写一下: sign[i]         =        1           (当i == 0 时,具体为什么我也没有具体的说明方法 ...

  8. ACM PKU 2559 Largest Rectangle in a Histogram http://acm.pku.edu.cn/JudgeOnline/problem?id=2559

    关于覆盖,用DP是一种很不错的解决方法,时效也很不错.... 这题目把图一画就很明确了,没有说明的必要了. #include <iostream> using namespace std; ...

  9. ACM PKU 1111 Image Perimeters http://acm.pku.edu.cn/JudgeOnline/problem?id=1111

    广搜永远记住,下标不要错,COPY时一定要记得改下标: #include <iostream> #include <queue> using namespace std;cha ...

最新文章

  1. day18——sql优化——绑定变量
  2. 为什么枚举类优于纯枚举?
  3. 眼见为实?其实是“脑补”!华人数学家解开视觉奥秘:一切都是大脑假装让人看见...
  4. 打造万能的Python开发环境
  5. 拿到了B轮融资,但这家创业公司还是被天使投资人玩死了
  6. 使用IPMI工具实现对服务器的远程管理
  7. 白皮书丨关于工业互联网,你想知道的都在这儿
  8. 图标字体制作,mock数据
  9. mac 截图快捷键
  10. 你使用过哪些数据分析的方法?
  11. Layui 左部菜单栏无限级分类
  12. UE4学习-初识虚幻引擎(下载、安装、重定向问题、安装引擎、启动)
  13. python 饼图代码_Python中使用Matplotlib画出饼图的代码实例
  14. GifUtil给gif图片添加文字、图片水印
  15. HTML超链接怎么做
  16. 鸿蒙大陆v2.8正式版,鸿蒙大陆2.2正式版附隐藏密码
  17. 数据中心机房温湿度监测
  18. 手机java系统说明什么_Android的手机系统是开源的,开源到底是什么意思?
  19. Excel 2010 SQL应用098 聚合函数之计算某列空值的数目
  20. DDR SDRAM的内部结构Cell Structure

热门文章

  1. ef mysql dbfirst,.NetCore教程之 EFCore連接Mysql DBFirst模式
  2. python databaselibrary_Robot Framework下DataBaseLibrary的使用
  3. python学习-syspath、系统内置模块
  4. python学习-条件语句
  5. 昆明大专学计算机,昆明冶金高等专科学校2020年云南省高等教育招收中等职业学校学生 (计算机类)考试大纲...
  6. mysql order by sql注入_mybatis中#{}和${}的区别及order by的sql注入问题
  7. python机制_python 加载模块机制
  8. 数学建模债券投资组合_1998年全国大学生数学建模竞赛题目A题投资的收益和风险.PDF...
  9. python怎么读取word文件_python之python-docx编辑和读取word文档
  10. 你真的会读datasheet吗?