当前位置:首页 > 排序 > 正文
洛谷P1774最接近神的人[NOI导刊]
127+

题目大意:n个数,每次只能交换相邻两个数,至少需要交换多少次,才能是他们有序?

最接近神的人

题目描述

破解了符文之语,小FF开启了通往地下的道路。当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案。而石门上方用古代文写着“神的殿堂”。小FF猜想里面应该就有王室的遗产了。但现在的问题是如何打开这扇门……

仔细研究后,他发现门上的图案大概是说:古代人认为只有智者才是最容易接近神明的。而最聪明的人往往通过一种仪式选拔出来。仪式大概是指,即将隐退的智者为他的候选人写下一串无序的数字,并让他们进行一种操作,即交换序列中相邻的两个元素。而用最少的交换次数使原序列变成不下降序列的人即是下一任智者。

小FF发现门上同样有着n个数字。于是他认为打开这扇门的秘诀就是找到让这个序列变成不下降序列所需要的最小次数。但小FF不会……只好又找到了你,并答应事成之后与你三七分……

输入输出格式

输入格式

第一行为一个整数n,表示序列长度

第二行为n个整数,表示序列中每个元素。

输出格式

一个整数ans,即最少操作次数。

输入输出样例

输入样例 #1

4
2 8 0 3

输出样例 #1

3

说明

对于30%的数据1≤n≤10^4。

对于100%的数据1≤n≤5*10^5;

-maxlongint≤A[i]≤maxlongint。

样例说明:开始序列为2 8 0 3,目标序列为0 2 3 8,可进行三次操作的目标序列:

1.Swap (8,0):2 0 8 3

2.Swap (2,0):0 2 8 3

3.Swap (8,3):0 2 3 8

解题思路

使用归并排序求逆序对,归并两个序列的时候,左边数字小,排在左边理所当然;右边数字小,排前面的时候,左边的每一个数字都与他形成逆序对。左端点是i,左边的结束位置是m,那么一共有m-i+1个元素。

程序实现

About

坚决不Copy代码!

本文标签:,,,,,,

洛谷P1774最接近神的人[NOI导刊]:等您坐沙发呢!

发表评论

😉😐😡😈🙂😯🙁🙄😛😳😮mrgreen.png😆💡😀👿😥😎😕

快捷键:Ctrl+Enter