ACM ICPC 2011–2012, NEERC, Northern Subregional Contest J. John’s Inversions(合并排序求逆序数对数)

这篇博客介绍了如何运用归并排序算法解决ACM ICPC 2011-2012年北方次区域竞赛中的一道题目,该题目涉及计算逆序数对。博主通过分析得出,当一种颜色的数字按顺序排列且相同颜色对应另一种颜色也按顺序排列时,逆序数对最少。为了在数量级较大的情况下有效计算,博主利用合并排序的原理,计算每个数字前面大于它的数字数量,最后累加得到答案。提供的代码实现了这一方法,并在主函数中读取输入数据,进行排序和计算。
摘要由CSDN通过智能技术生成
题目链接:http://codeforces.com/gym/100609/attachments
题目大意:有n张牌,每张牌有红色和蓝色两面,两面分别写了一些数字,同种颜色的任意两个数字若排在前面的数字比排在后面的数字大就叫做一对逆序数。求怎样排序得到的逆序数对最少。
解题思路:其中一种颜色的数字是顺序且这种颜色数字相同时对应的另一种颜色的数字是顺序时得到的逆序数对数最少。难点在于求逆序数对数。因为数量很大O(n^2)复杂度不能满足,这里根据合并排序的原理求解每个数字前面有多少个比它大的数字,最后加起来就是答案。合并排序复杂度是O(n)。
代码如下:
#include <cstdio>
#include <algorithm>
#include <cst
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值