場外模擬 省選聯考 2020 遊記

博客園同步

注:本人模擬省選 AA 卷。

前記

一場英語模擬期末直接萎掉之後心境垂垂暮老,然後來模擬省選增強一點信心。實際卻不大行

本來立的目標是口頭 200200 的,看完題發現 150150 的目標比較合適。

組合數問題

先開 T2T2 的主要原因:覺得自己數論強。沒了。

k=0nfi×xk×Cnk\sum_{k=0}^n f_i \times x^k \times C_n^k

其中 f=i=0maikif = \sum_{i=0}^m a_i \cdot k^i

算法一

暴力。fif_iO(m)\mathcal{O}(m) 的時間計算,CnkC_n^k 用楊輝三角,xkx^k 遞推。

時間複雜度:O(nm)\mathcal{O}(nm).

實際得分:15pts15pts.

Link\texttt{Link} 代碼

算法二

注意到,m=0m=0 有部分分。

因此考慮,m=0m=0 時,即多項式降爲常數項,如何通過 n105,109n \leq 10^5 , 10^9 的數據?

顯然,原式就變成了

k=0na0×xk×Cnk\sum_{k=0}^n a_0 \times x_k \times C_n^k

=a0×i=0nxiCni = a_0\times \sum_{i=0}^n x^i \cdot C_n^i

你懵了,一看,唉?

n105n \leq 10^5pp 還是質數?

那爺直接大力 Lucas O(nlogn)\texttt{Lucas} \space \mathcal{O}(n \log n) 過掉唄。

n109n \leq 10^9 呢?你再看看這個式子 \cdots

等一下,哎?這怎麼那麼像什麼公式呢?

翻出 二項式定理 的小本本,我們發現:

(x+1)n=i=0nxiCni(x+1)^n = \sum_{i=0}^n x_i \cdot C_n^i

誠然不會二項式的弱也就算了吧

顯然, a0×(x+1)na_0 \times (x+1)^n 是個人都會算。

時間複雜度:O(logn)\mathcal{O}(\log n).

實際得分:40pts40pts.

Link\texttt{Link} 代碼

算法三

實際上,本人想不出,m5m \leq 5 有什麼特殊的性質。

聽說正解是 第二類斯特林數 可是我模板都不會,告辭~

冰火戰士

結果 T2 40ptsT2 \space 40pts 是個好的預兆,T1T1 一開發現貌似是個二分。

首先,O(Qlogx)6.2×107\mathcal{O}(Q \log x) \thickapprox 6.2 \times 10^7 ,不是個好的複雜度。

其次,這玩意兒有單調性嗎?自己想一下,嗯 \cdots 當它有吧。 你告訴我考場上也這麼猜唄

直接告訴我我能 A\text{A},所以直接想正解。

首先我們可以用 vector<pair>\texttt{vector<pair>} 來維護雙方戰士。好像 bitset 也行,但畢竟是模擬考啊,自己不熟的還是不要用吧。

然後 vector\texttt{vector} 的常數本身就很懸,加上上次機房的一個大佬信誓旦旦地和老師辯論說

vector 插入刪除很多個數會直接爆棧,要去找內存  

找內存 = ?

不管,考場策略。再說就算 T\text{T} 也不怕,反正不是正式考?

那問題來了,你 log\log 二分掛在哪兒,總不能 O(Q)\mathcal{O}(Q) 驗證吧?那才 30 分好吧

算了一下,自己 T2\text{T}2 調試了 1.5h1.5h,那正式考場還有 4h4h 肯定,肯定能寫到 3030.

T3

爲了表現本人對此題的足夠不重視,連題目名字也一律去掉了。

顯然 1515 分手到擒來,因爲正式考試會有足夠時間調試,我也有這個信心。

Day1\text{Day1}

以上,30+40+15=8530+40+15 = 85 開幕雷擊。

信號傳遞

畢竟是初一,唉,省選還是弱,弱,弱。

一開題就想到了 O(m!n)\mathcal{O}(m \text{!} \cdot n) 的算法。一看數據範圍,就 3030 分啊?

錘子吧?

好,這個數據很有梯度,是在誤導我用 O(2mm)\mathcal{O}(2^m \cdot m) 的暴力?

首先,這個 3030 的暴力再簡單不過了。所有的數據聚焦在 20+20+ 只說明 O(2mm)\mathcal{O}(2^m \cdot m) 需要大力卡常,m=23m=23 的時候達到了將近 2×1082 \times 10^8,有點懸。

說的好像我寫出來了似的

分析一下,這可以說明,O(n)\mathcal{O}(n) 的驗證不科學。

我們可以把每兩個信號站的傳遞次數記錄,然後用 O(m2)\mathcal{O}(m^2) 的時間驗證,繼續暴力。

看似優了,實則 O(m!m2)\mathcal{O}(m! \cdot m^2) 還是過不了。

等一下,這個 4×1084 \times 10^8 的卡常可以試一試,畢竟 LUOGU\texttt{LUOGU} 的評測機不錯,可惜沒有冥間數據。要是能卡過就是 6060 了。

毫不客氣地,m=21m=21 顯然這過不了了,幾乎到了 10910^9 級。

6060 滾粗,沒了。代碼不寫了。因爲暴力全排的寫法太簡單,估計 1h1h 就能輕鬆拿到 6060.(Day1T2\text{Day1T2}2h2h4040,現在呢?)

等一下,我從夢裏醒來了,我才發現自己寫的是 O(m!m2)\mathcal{O}(m! \cdot m^2) 而不是 O(2mm2)\mathcal{O}(2^m \cdot m^2).

所以還是 3030 萎掉了啊。

一坨異或感覺不妙。上次 NOI ONLINE TG 3\text{NOI ONLINE TG 3} 的異或我就是找週期瞎寫結果 7070 的,反正自己很討厭異或!

我發現有 1010 的暴力分,2020 的鏈分,2020 的權值 11 的分。

暴力分只需要 10min10 \text{min} 就可以輕鬆到手。

權值 11 和 鏈 沒有找到絲毫線索。

所以就這麼點分唄?

鏈的話,對於 uu,我需要計算 (v1+1)(v2+2)(vt+3)(v_1+1)⊕(v_2+2)⊕ \cdots⊕(v_t+3)vv 爲子樹集合),那麼顯然這玩意兒算不了。等一下 \cdots \cdots 爲什麼不用 Trie\text{Trie} 樹試着維護呢?我覺得可以試試。

不過這裏不大行啊。

權值爲 11 的話,Trie\text{Trie} 是可以試試的。畢竟,求距離 +1+1 的異或值麼,異或可以用 Trie\text{Trie} 維護,沒了。

那怎麼維護呢?假設對於 uu 建立兒子節點集合(非子樹集合) vv,考慮從 vuv \rightarrow u 怎麼搞?誠然,我們需要把當前 Trie\text{Trie} 的值全體 +1+1 (可以在詞尾標記修改的,但是時間會炸裂),然後再合併。可能是本人比較菜罷

再見,1010 分。

作業題

懷着 125125 分的渣成績,寄希望於最後一題。

顯然就算我 A 掉這道題也進不了隊的

感覺暴力分挺多,不慌,爺的目標 150150 估摸着可以試一試的。

首先,O(Cmn1logw)\mathcal{O}(C_m^{n-1} \log w) 穩穩地過掉了 1010 分。

估摸着生成樹應該沒有那麼多吧。不要和 CCF 講概率了

wiw_i 均相同?好性質啊,那 gcd\gcd 恆爲常數 是個好東西!

那麼,這題顯然弱化爲:

求一個無向圖所有生成樹的邊權之和。

就這?不會。

然後發現 mnm \leq n,然後連通 \cdots 說明一點:這是棵樹(基環樹)!

顯然對於一棵樹,它的生成樹個數只有 11 個,它自己,瞎求就行了。

對於 基環樹,顯然,生成樹個數是環的長度,這是破環爲鏈的一個思想。

我們可以求出環外的 \sumgcd\gcd,然後穩穩地枚舉環。

哈哈!那爺不就 3030激動啥

至少 155155 目標達成了,耶!

顯然,wiw_i 均爲質數是 wiw_i 均相同的加強版,所以考慮,如何求出一個圖所有生成樹的邊權之和。

大力枚舉大概 n30n \leq 30 是過不了的耶!再見。

總結

作爲場外初一模擬省選,沒有條件用 9h9h 的時間模擬考試,只用 2h2h 的時間寫了 Day1 T1,2\text{Day1 T1,2} 並初步看了其它題的思路。

顯然這次 155155 離進隊還是很遠的(12\frac{1}{2} 進隊吧?),但是暴力分拿滿了,沒什麼遺憾的了。

今番良晤,豪興不淺,他日江湖相逢,再當杯酒言歡。咱們就此別過。江湖路遠,各位請一路珍重。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章