洛谷 P1908 逆序对(树状数组解法)

归并排序解法:https://www.cnblogs.com/lipeiyi520/p/10356882.html

题目描述

猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。最近,TOM老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定义的:对于给定的一段正整数序列,逆序对就是序列中ai>aj且i<j的有序对。知道这概念后,他们就比赛谁先算出给定的一段正整数序列中逆序对的数目。
Update:数据已加强。

输入输出格式

输入格式:

第一行,一个数n,表示序列中有n个数。

第二行n个数,表示给定的序列。序列中每个数字不超过10^9

输出格式:

给定序列中逆序对的数目。

输入输出样例

输入样例#1: 
6
5 4 2 6 3 1
输出样例#1: 
11

说明

对于25%的数据,n2500

对于50%的数据,n4×10^4。

对于所有数据,n5×10^5

请使用较快的输入输出

应该不会n方过50万吧 by chen_zhe

解题思路:

用a数组储存给定序列,第i个数字为a[i];

用树状数组c[a[i]]记录a[i]出现次数,但a[i]可能很大,我们需要将它离散化,然后用c[i]储存在这个元素之前输入并比当前元素小或等于元素个数

猜你喜欢

转载自www.cnblogs.com/lipeiyi520/p/10846927.html