做完有时间进来看一下吧,有一个小地方不太懂。。。

P1966 [NOIP2013 提高组] 火柴排队

我来举个例子,比如说你有这两堆火柴: 2 1 3 4 8 7 6 5 很明显我们对应的时候应该这么对应: 2 1 3 4 6 5 7 8 ------------ 我们先把这两队火柴每一根火柴在队伍中的排名表示出来(比如第二堆火柴中5是最短的,应该是第一名) 2 1 3 4 4 3 2 1 再强行定义一下,告诉计算机2=1,1=2,以第一堆为榜样重新定义(因为你是以第一堆为模型进行排序啊,没必要两边都排序) 1 2 3 4 3 4 2 1 明白了吗?
by 安妮007 @ 2018-02-11 06:59:36


@[Ash1mar](/space/show?uid=33266) 我是这么想的,因为这道题让最大值最小,所以序列肯定有对应关系,例如 2 3 4 1 和 5 2 3 1 这两个序列对应关系应该是: 1对应1,2对应2,3对应3,4对应5; 而只要让序列对应排列就能让最大值最小,而这与逆序对有什么关系呢? 其实,因为1对应1,1在序列二中的位置是4 ,2对应2,2在序列2中的位置是2.。。。 所以将序列1中对应的数字的位置列出来就是 2 3 1 4 接下来就只要求通过每次相邻的互换,换多少次能让序列有序就为答案案了,而这个数就是逆序对数
by 黄俊豪 @ 2018-11-07 08:07:29


|