ACM模板库

ACM模板库


线性基求交集

<pre><code>L_B Merge(L_B A, L_B B){ L_B C, ALL; C.init(), ALL.init(); ui cnt[35]; for(int i = 0; i &lt;= 31; i++){ C.b[i] = A.b[i]; cnt[i] = (1u &lt;&lt; i); } for(int i = 31; i &gt;= 0; i--){ ui v = B.b[i]; if(v){ ui temp = 0; bool can = true; for(int j = 31; j &gt;= 0; j--){ if(v &amp; (1u &lt;&lt; j)){ if(C.b[j]){ v ^= C.b[j]; temp ^= cnt[j]; }else{ can = false; C.b[j] = v; cnt[j] = temp; break; } } } if(can){ ui k = 0; for(int j = 31; j &gt;= 0; j--){ if(temp &amp; (1u &lt;&lt; j)){ k ^= C.b[j]; } } // cout &lt;&lt; k &lt;&lt; endl; Insert(ALL, k); } } } return ALL; }</code></pre>

页面列表

ITEM_HTML