天天看點

Ball in berland(代碼時間複雜度優化)題目解析

題目

https://codeforces.ml/contest/1475/problem/C

題目翻譯參考:https://blog.csdn.net/qq_43697906/article/details/113241534

本題資料量有2*10^5,規定時間有2s,故應該時間複雜度應該設為O(n)

解析

枚舉每一次排列(ai,bj);假如說枚舉到(2,3),則如下圖,黃色以外的部分就是(2,3)可以比對的另一個排列,其個數為num(總排列數)-男生編号為2的排列數-女生編号為3的排列數+1(因為(2,3)這個排列被多減了)

Ball in berland(代碼時間複雜度優化)題目解析

如圖為題目中的用例:

Ball in berland(代碼時間複雜度優化)題目解析
Ball in berland(代碼時間複雜度優化)題目解析

方案個數為:[(4-2-2+1)+(4-2-1+1)+(4-1-2+1)+(4-1-1+1)]/2 = (1+2+2+3)/2 = 4 因為方案個數有重合,是以要除以2