這是在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~