
求逆序对
Fuko_Ibuki
Eclipse first, the rest nowhere. 已从ACM领域退出,这个账号不会再发题解了。
展开
-
归并排序求逆序对
昨天Noip初赛里考到了这个内容。我人品不错猜到了题。逆序对的定义是:在一个数组中,选择两个数(一共有C n 2种选法),这么多选法里前者比后者大的对数即为逆序对的个数,也就是进行冒泡排序时两两交换的次数。直接进行冒泡排序固然可以,可是复杂度很大,跟不上100000的数据量。所以我们要用NlogN的方法求逆序对。我知道的方法有两种,一种是线段树,我不会;还有一种就是比较好写的归并排序法。归并排序是怎原创 2017-10-15 08:51:20 · 12020 阅读 · 0 评论 -
POJ 2299 Ultra-QuickSort 模板 求逆序对
题目Ultra-QuickSort 我特地又学习了树状数组求逆序对。如果不会树状数组,现在赶快点击之。 我一看这个是求逆序对的裸题,先用归并排序水了一发。 归并排序求逆序对?戳这里#include<cstdio> using namespace std; typedef long long ll; const ll boss=5e5; ll a[boss+10],tmp[boss+10],n,原创 2017-11-04 10:07:24 · 13930 阅读 · 0 评论 -
UESTC - 1583 曜酱的心意 求逆序对
题面看曜酱的心意 这个题题目背景简直是毒,我在吐槽曜酱全排列100000个数的同时不禁审视起这道题来。 把一个1-n的全排列通过不断交换相邻两个数字,改变成另一个1-n的全排列,求交换最小的次数。由于n<=100000,故要用nlogn算法。那很明显就是求逆序对了。 我们知道有两种算法,树状数组和归并排序。你在提交状态里看一下,40-50ms的基本是树状数组,60-70ms的是归并排序。至少我原创 2017-11-01 18:41:17 · 11637 阅读 · 0 评论