ACM模板库

ACM模板库


线性基

<pre><code class="language-cpp">#include &lt;iostream&gt; using namespace std; typedef long long ll; bool zero = false; ll xorbase[64], rxorbase[64]; int cnt = 0; bool insert(ll x){ for(int i = 62; i &gt;= 0; i--){ if(x &amp; (1ll &lt;&lt; i)){ if(xorbase[i]) x ^= xorbase[i]; else{ xorbase[i] = x; return true; break; } } } zero = true; return false; } void build(){ for(int i = 62; i &gt;= 0; i--){ for(int j = i-1; j &gt;= 0; j--){ if(xorbase[i] &amp; (1ll &lt;&lt; j)){ xorbase[i] ^= xorbase[j]; } } } for(ll i = 0; i &lt;= 62; i++){ if (xorbase[i]) rxorbase[cnt++] = xorbase[i]; } } ll getKXor(ll k){ ll ans = 0; for(int i = 62; i &gt;= 0; i--){ if((1ll &lt;&lt; i) &amp; k) ans ^= rxorbase[i]; } return ans; }</code></pre>

页面列表

ITEM_HTML