博客園同步
注:本人模擬省選 A 卷。
前記
一場英語模擬期末直接萎掉之後心境垂垂暮老,然後來模擬省選增強一點信心。實際卻不大行
本來立的目標是口頭 200 的,看完題發現 150 的目標比較合適。
組合數問題
先開 T2 的主要原因:覺得自己數論強。沒了。
k=0∑nfi×xk×Cnk
其中 f=∑i=0mai⋅ki
算法一
暴力。fi 用 O(m) 的時間計算,Cnk 用楊輝三角,xk 遞推。
時間複雜度:O(nm).
實際得分:15pts.
Link 代碼
算法二
注意到,m=0 有部分分。
因此考慮,m=0 時,即多項式降爲常數項,如何通過 n≤105,109 的數據?
顯然,原式就變成了
k=0∑na0×xk×Cnk
=a0×i=0∑nxi⋅Cni
你懵了,一看,唉?
n≤105,p 還是質數?
那爺直接大力 Lucas O(nlogn) 過掉唄。
那 n≤109 呢?你再看看這個式子 ⋯
等一下,哎?這怎麼那麼像什麼公式呢?
翻出 二項式定理 的小本本,我們發現:
(x+1)n=i=0∑nxi⋅Cni
誠然不會二項式的弱也就算了吧
顯然, a0×(x+1)n 是個人都會算。
時間複雜度:O(logn).
實際得分:40pts.
Link 代碼
算法三
實際上,本人想不出,m≤5 有什麼特殊的性質。
聽說正解是 第二類斯特林數 可是我模板都不會,告辭~
冰火戰士
結果 T2 40pts 是個好的預兆,T1 一開發現貌似是個二分。
首先,O(Qlogx)≈6.2×107 ,不是個好的複雜度。
其次,這玩意兒有單調性嗎?自己想一下,嗯 ⋯ 當它有吧。 你告訴我考場上也這麼猜唄
直接告訴我我能 A,所以直接想正解。
首先我們可以用 vector<pair> 來維護雙方戰士。好像 bitset
也行,但畢竟是模擬考啊,自己不熟的還是不要用吧。
然後 vector 的常數本身就很懸,加上上次機房的一個大佬信誓旦旦地和老師辯論說
vector 插入刪除很多個數會直接爆棧,要去找內存
找內存 = ?
不管,考場策略。再說就算 T 也不怕,反正不是正式考?
那問題來了,你 log 二分掛在哪兒,總不能 O(Q) 驗證吧?那才 30 分好吧
算了一下,自己 T2 調試了 1.5h,那正式考場還有 4h 肯定,肯定能寫到 30.
T3
爲了表現本人對此題的足夠不重視,連題目名字也一律去掉了。
顯然 15 分手到擒來,因爲正式考試會有足夠時間調試,我也有這個信心。
Day1
以上,30+40+15=85 開幕雷擊。
信號傳遞
畢竟是初一,唉,省選還是弱,弱,弱。
一開題就想到了 O(m!⋅n) 的算法。一看數據範圍,就 30 分啊?
錘子吧?
好,這個數據很有梯度,是在誤導我用 O(2m⋅m) 的暴力?
首先,這個 30 的暴力再簡單不過了。所有的數據聚焦在 20+ 只說明 O(2m⋅m) 需要大力卡常,m=23 的時候達到了將近 2×108,有點懸。
說的好像我寫出來了似的
分析一下,這可以說明,O(n) 的驗證不科學。
我們可以把每兩個信號站的傳遞次數記錄,然後用 O(m2) 的時間驗證,繼續暴力。
看似優了,實則 O(m!⋅m2) 還是過不了。
等一下,這個 4×108 的卡常可以試一試,畢竟 LUOGU 的評測機不錯,可惜沒有冥間數據。要是能卡過就是 60 了。
毫不客氣地,m=21 顯然這過不了了,幾乎到了 109 級。
60 滾粗,沒了。代碼不寫了。因爲暴力全排的寫法太簡單,估計 1h 就能輕鬆拿到 60.(Day1T2 我 2h 才 40,現在呢?)
等一下,我從夢裏醒來了,我才發現自己寫的是 O(m!⋅m2) 而不是 O(2m⋅m2).
所以還是 30 萎掉了啊。
樹
一坨異或感覺不妙。上次 NOI ONLINE TG 3 的異或我就是找週期瞎寫結果 70 的,反正自己很討厭異或!
我發現有 10 的暴力分,20 的鏈分,20 的權值 1 的分。
暴力分只需要 10min 就可以輕鬆到手。
權值 1 和 鏈 沒有找到絲毫線索。
所以就這麼點分唄?
鏈的話,對於 u,我需要計算 (v1+1)⊕(v2+2)⊕⋯⊕(vt+3) (v 爲子樹集合),那麼顯然這玩意兒算不了。等一下 ⋯⋯ 爲什麼不用 Trie 樹試着維護呢?我覺得可以試試。
不過這裏不大行啊。
權值爲 1 的話,Trie 是可以試試的。畢竟,求距離 +1 的異或值麼,異或可以用 Trie 維護,沒了。
那怎麼維護呢?假設對於 u 建立兒子節點集合(非子樹集合) v,考慮從 v→u 怎麼搞?誠然,我們需要把當前 Trie 的值全體 +1 (可以在詞尾標記修改的,但是時間會炸裂),然後再合併。可能是本人比較菜罷
再見,10 分。
作業題
懷着 125 分的渣成績,寄希望於最後一題。
顯然就算我 A 掉這道題也進不了隊的
感覺暴力分挺多,不慌,爺的目標 150 估摸着可以試一試的。
首先,O(Cmn−1logw) 穩穩地過掉了 10 分。
估摸着生成樹應該沒有那麼多吧。不要和 CCF 講概率了
wi 均相同?好性質啊,那 gcd 恆爲常數 是個好東西!
那麼,這題顯然弱化爲:
求一個無向圖所有生成樹的邊權之和。
就這?不會。
然後發現 m≤n,然後連通 ⋯ 說明一點:這是棵樹(基環樹)!
顯然對於一棵樹,它的生成樹個數只有 1 個,它自己,瞎求就行了。
對於 基環樹,顯然,生成樹個數是環的長度,這是破環爲鏈的一個思想。
我們可以求出環外的 ∑ 和 gcd,然後穩穩地枚舉環。
哈哈!那爺不就 30 了 激動啥
至少 155 目標達成了,耶!
顯然,wi 均爲質數是 wi 均相同的加強版,所以考慮,如何求出一個圖所有生成樹的邊權之和。
大力枚舉大概 n≤30 是過不了的耶!再見。
總結
作爲場外初一模擬省選,沒有條件用 9h 的時間模擬考試,只用 2h 的時間寫了 Day1 T1,2 並初步看了其它題的思路。
顯然這次 155 離進隊還是很遠的(21 進隊吧?),但是暴力分拿滿了,沒什麼遺憾的了。
今番良晤,豪興不淺,他日江湖相逢,再當杯酒言歡。咱們就此別過。江湖路遠,各位請一路珍重。