这是在BUPT acm上面的一个题。一开始写了个o(n^2)的算法,到程序里面跑,结果超时了,后来想办法写了两个o(n)的程序,后来发现逻辑是错的,想的不周到。网上查了一下发现了一种分治法可以以o(nlogn)的时间复杂度计算出逆序数。自己写了一个,记录一下。
1. 超时的程序
2,3. 自己想的方法,错误的~
4. 分治的程序,又WA了,找找原因(程序里面本来是一个memcpy函数,但是好像没起作用,不知道为什么,就拿for循环改了)
5. 按理说第一个程序虽然超时,但是结果应该是没有问题的。这样的话程序 4 出问题的原因就是没考虑数列中存在重复元素的情况。我把程序4修改后
此时已经可以得到和程序1一样的结果了,但是答案还是WA,why?
日啊,最后终于AC了,原来逆序数太大,要用long long才能存的下!!!!
感动ing~