省選模擬9 題解

2022-03-16 18:57:36 字數 1641 閱讀 5712

直接將$\varphi(i*j)$展開為$\varphi(i)*\varphi(j)*\frac$。

於是可以套用莫比烏斯反演。

最終的式子大概是$\sum \limits_^f(t)\sum \limits_^}\sum \limits_^}\varphi(i*t)*\varphi(j*t)*dis(p_,p_)$。

然後我的思路就偏了。

為了統計$dis(i,j)$,我把$i$與當前分治點的距離放到了對應的下標上。

用到了與$normal$一題類似的點分治做法,然後還得打個任意模數$ntt$。

複雜度有點奇怪,但是隨機資料跑的挺快的(僅指能在8s內跑完)。

乙個簡單的解法是直接將$dis_$拆分為$dep_i+dep_j-2*dep_$。

於是只要構造虛樹就可以直接進行子樹歸併$dp$。

考慮第一步送走的豬(不妨稱之為豬王),一定滿足是三元組的交集,否則一定無解。

將豬王從三元組中提出後,所有的豬形成二元關係。

發現乙個結論是方案是否成立與原圖刪掉兩個點後是否可以奇偶染色有關。

考慮乙個方案,先將豬王運到河對面,接著不斷運黑豬到河對面,之後運豬王回來,不斷運白豬到河對面。

之後運乙隻豬王子到河對面,帶豬王回來,再運乙隻豬公主。

然後就可以瘋狂運大黑豬過去了,最後一手把豬王運回去就可以團圓回家過年了。

因為已經刪掉了豬國王,還有兩個特殊的豬分別是豬王子和豬公主,所以問題轉化為刪掉任意兩個點和豬國王之後原圖是否可以奇偶染色。

題解的做法又很神仙。

考慮列舉刪掉乙個點,然後直接進行dfs。

定義奇邊為能形成奇環的非樹邊,偶邊同理。

刪掉另乙個點後原圖不含奇環,也就是可以奇偶染色的條件是:

1.該點被所有的奇邊跨過。

2.不存在一條奇邊和一條偶邊,滿足奇邊和偶邊均由這個點的乙個子樹上的點連向這個點的祖先鏈(對於這種情況,可以跨過該點直接形成奇環)。

對於前者,直接通過樹上差分打標記修改。

對於後者,不妨直接維護兩個追溯陣列,表示每個點由它的子樹最早可以追溯到的dfn值。

因為dfs樹上只有返祖邊,dfn值的大小與深度是有關係的,然後就可以進行判斷了。

提答題。

有意思的大概有:

1.求1e9個點,1e9條邊的生成樹邊權總和(已知模998244353意義下的結果)

因為只多一條邊,直接列舉替換掉的邊的邊權,然後和模998244353意義下的樣例擬合,擬合上後模1e9+7就好了。

正解是根據該隨機數的生成有逆元,樹的生成方式較簡單,直接反向推回去嘗試替換。

2.求1e9個點形成的樹,每個點的子樹大小。

同樣利用逆元。倒著推回去。size陣列開不下。

因為資料是隨機的,所以編號大的點size並不大。

所以對於編號小的點和編號大的點分別用int和short存下。

3.隨機資料,維護最多1e9個元素的堆。

因為資料隨機,堆中同時並沒有很多元素,所以直接用std的暴力跑就好了。

4.隨機資料,1e9個數,插入每個之後求中位數。

乙個指標加上乙個桶,指標維護字首和。

因為資料隨機,所以中位數的變化並不多。

5.隨機資料,1e7個點,1e9條邊,求每個點雙中點的編號的和。

因為資料隨機,點數邊數差距過大,最終只有兩個點雙。

因為資料生成的性質,奇數偶數分別形成點雙。

省選模擬104 題解

a.簽到題 把每個點向它右側比他大的第乙個點之間連邊,如果沒有那麼向 root 連邊。那麼可以構成一棵樹。特判一些情況之後,可以認為問題就是 1.給某節點和它的所有兒子節點權值加上乙個值。2.詢問一條路徑的權值和。首先考慮如果只詢問單點的維護方法,其實就是打乙個標記表示給整個兒子集合都加上了若干權值...

省選模擬102 題解

a.island 對於正負不同的情況,o n 列舉左側的位置然後計算。對於正負性相同的情況,把笛卡爾樹建出來,然後每次考慮跨過最小值的貢獻。分幾種情況 左右均不超過最小值,左右僅有乙個超過最小值,左右都超過最小值。然後順便統計上其中乙個端點為劃分點的貢獻。然後瘋狂的寫式子拆式子就沒了。做法挺簡單的,...

省選模擬101 題解

a.石子遊戲 問題可以簡單轉化為最少能取出多少個數,使得異或和為 k 顯然答案是小於 log a i 的,因為線性基已經可以拼出所有數了。所以可以考慮列舉這個答案,然後就是 dp 表示用 i 個數能否拼出 j 轉移可以用 fwt 優化,暴力做就是兩個 log 的,因為只需要一項所以手動 ifwt 可...