線性基求交(NFLSOJ #396)

WAautomaton發表於2019-03-28

(許可權題)題目連結

題解

首先顯然是容斥,根據二項式反演(或者做題經驗),可以算出容斥係數。接下來就是要對線性基求交,即對於兩個線性空間V1,V2V_1,V_2,求出其交集 V1V2V_1 \cap V_2
於是接下來證明幾個引理:


引理1:V1,V2V_1,V_2 都是線性空間,則 V1V2V_1 \cap V_2 也是線性空間。
考慮證明 V1V2V_1 \cap V_2 的加法封閉性。令 v1,v2V1V2v_1,v_2 \in V_1 \cap V_2,那麼有 v1+v2V1,v1+v2V2v_1+v_2 \in V_1,v_1+v_2 \in V_2,因此顯然交集是線性空間。


引理2:V1,V2V_1,V_2 是線性空間,且 B1,B2B_1,B_2 分別是他們的基,則令 W=B2V1W=B_2 \cap V_1,若 B1(B2W)B_1 \cup (B_2 \setminus W) 線性無關,則 WWV1V2V_1 \cap V_2 的基。
考慮任意的 vV1V2v \in V_1 \cap V_2,那麼 vv 可以被 B1,B2B_1,B_2 線性表示。考慮證明 vv 可以被 WW 線性表示。不妨令 vv 可以被 SSTT 共同線性表示,其中 SWS \in WTBWT \in B \setminus W,顯然,由於 SS 可以被 B1B_1 線性表示,如果 TT 不為空,則 TTB1B_1 顯然線性相關,與題目不符。因此 vv 可以直接由 WW 表示出。


但是顯然,B1(B2W)B_1 \cup (B_2 \setminus W) 有可能線性相關。於是其實我們只要換一組基,即把 B2B_2 換一下即可。

考慮 bib_i 表示 B2B_2 中前 ii 個向量組成的基,令我們新構造的基為 γ\gamma,第 ii 個向量為 γi\gamma_i,則若 B2B_2 中第 ii 個向量能夠被 bi1B1b_{i-1} \cup B_1 表示出,不妨令它能夠拆分為 S+TS+T,其中 Sbi1,TB1S \subseteq b_{i-1},T \subseteq B_1,我們令 γi=S\gamma_i=S;否則的話 γi\gamma_i 就是 B2B_2 中的第 ii 個向量。

顯然,這樣構造出的基滿足 B1(γW)B_1 \cup (\gamma \setminus W) 線性無關,因此問題得以在 O(d3)O(d^3) 的時間內解決。其中 dd 為向量維數。如果異或壓位的話,複雜度就是 O(d332)O(\frac{d^3}{32})了。

相關文章