1. 程式人生 > >12.3 模擬賽

12.3 模擬賽

過於神仙的比賽

T1 graph

題目大意:

一個無向圖 若其的一個子圖存在尤拉通路 則答案+=這個子圖邊數的平方

思路:

對於一個連通圖 發現一個奇妙的結論即這個聯通塊的答案=$2^{m-n+1}$(n為點數,m為邊數

然後對於多個聯通塊 答案為$2^{m-n+c}$,c為聯通塊數量

而答案可以轉化為$\sum_{x=1}^m \sum_{y=1}^m F(x,y)$其中$F(x,y)$表示強制選x和y這兩條邊的答案

所以現在考慮選了兩條邊後對答案的影響 若聯通塊數+1 則對答案的貢獻為$2^{m-n-1}$ 否則為$2^{m-n-2}$

則這道題變成了在無向圖上選兩條邊對聯通塊數量的影響 可以參考bzoj 3569

對每個非樹邊rand一個權值 一個樹邊的權值為覆蓋這條邊的所有權值異或和 若兩條邊異或和為1 則說明選這兩條邊會使聯通塊數量+1

最後統計一下答案

 

T2 math

題目大意:

思路:

首先可以構造一個狄利克雷卷積 $G=F*\mu$ 

當$d=1$的時候 $G(p)=0$ 發現$G(p^c)=F(p^c)-F(p^{c-1})$

由於$G(i)$為積性函式 所以$G(i)=G({p_1}^{c_1}) \times ··· G({p_k}^{c^k})$

則①$G(x)>0$的充要條件為x的每一個質因子的次數都$\geq 2$

這樣可以使有意義的$G$數量變少 又可以把$G$捲回去即$F=G*1$

則$F(i)=\sum_{d|n} G(d)$ 然後答案為$\sum_{i=1}^n G(i) \times \lfloor \frac{n}{i} \rfloor$

由①得對於所有對答案有貢獻的$G(i),i$都可以表示為$a^2 \times b^3$的形式,

而這種數的數量為$n^{\frac{1}{2}}$級別的 可以搜尋

 

T3 math

思路:

通過觀察可以發現$T(i,j)=C(i,j)*(i+1)$ 然後經過一些觀察發現 所求其實為$lcm(n-k+1,n-k+2··· n)$

可以構造一個數列$A_i[]$ 使得 $\prod_{i=1}^n A_r[j]=lcm(l,···,r)$

考慮已經構造好了$i-1$項 現在要加入第$i$這個數 則我們可以構造一個棧,分解$i$,在前面的數中將每個質數扔掉 eg:

 * 6: 1 1 1 2 5 6

 * 7: 1 1 1 2 5 6 7

 * 8: 1 1 1 1 5 3 7 8

······

這樣的話是需要將這一段的點乘起來即可 由於強制線上 使用主席樹維護