先更點口胡題解。
Day1T1
記\(pre_{1/2},suf_{1/2}\)分別表示兩種屬性的戰士的能量前/后綴和,找到最大的\(i\)滿足\(pre_{1,i} \le suf_{2,i}\),也即\(pre_{1,i} +pre_{2,i} \le sum_2\)。
只需要維護支持單點修改和二分的數據結構即可。樹狀數組是一種可行的選擇。
Day1T2
把普通多項式多項式轉化成組合數多項式的形式,即\(f(k)=\sum_{i=0}^mb_i\binom{k}{i}\)。
於是
計算\(\{b_i\}\)的過程中不需要使用到除\(1\)以外的數的逆元,因此對模數沒有要求。
Day1T3
根據擬陣那套理論,限定禮品集合\(A\)和\(B\)為“最小”和“最大”的等價條件是:對於任意\(A\)中元素\(x\)和非\(A\)中元素\(y\),若\(A\cup\{y\}\setminus\{x\}\)是一個基,那么\(val_y \ge val_x\);集合\(B\)同理。
此時問題相當於給出若干偏序關系和調整權值的代價函數,要求最小化調整代價。
由於代價函數是凸的,可以運用保序回歸那套理論,對所有禮品的權值做整體二分,每次用網絡流求一個最小權閉合子圖作為權值划分的依據。
Day2T1
狀壓即可。
Day2T2
只需要實現一個數據結構維護一個無序數集,支持全體數字加一、快速合並、查詢所有數異或和。把二進制位反過來建\(\text{01-Trie}\)即可。
Day2T3
求圖中所有生成樹邊權和只需要令每條邊邊權為\(1+w_ix\)后在模\(x^2\)下做普通矩陣樹即可,時間復雜度\(O(n^3)\)。
加入了\(\gcd\)一項后套路地進行一次莫比烏斯反演,可以發現答案為\(\sum_d\varphi(d)\times [\mbox{所有邊都是}d\mbox{的倍數的生成樹的邊權和}]\),看上去需要做\(\max\{w_i\}\)次求行列式,但考慮到參與構成此部分的圖中邊的總數不超過\(m\times \sigma_0(w_i)\),而一張少於\(n-1\)條邊的圖中一定不包含生成樹,故求行列式的次數其實只有\(O(\frac{m\times \sigma_0(w_i)}{n-1})\)次,總復雜度可以估計為\(O(n^4\sigma_0(w_i))\)。
代碼等loj上傳了數據且有時間了再寫。
咕咕咕。