分治法 求 逆序數

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

發佈了82 篇原創文章 · 獲贊 15 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章