20220222省選組總結

2022-09-23 03:30:12 字數 1144 閱讀 6888

t1

不會暴力怎麼打是我的問題qaq

總歸打了個水法20pts。

暴力是對於每個格有兩種刪法,確定了哪種後在它之前必要刪除的格仔和刪法就都確定了,這時 \(o(n^4)\) 的,35pts。

然而會了暴力怎麼就不會滿分呢???

每個點有兩種刪法,左或右,乙個先刪左的格仔,它左邊的格也一定是先刪左的。

於是左右兩種方向做,繼承前乙個格仔刪的點,複雜度就是 \(o(n^3)\) 的了。

t2對於一顆生成樹,每個點的度數是 \(d_i\) ,它的貢獻就是

\[\prod_^n d_i \prod _^n w_i^

\]所以我們對每個點分別考慮,又結合prufer序列相關知識,

prufer 序列與生成樹一一對應,每個點的度數則為 序列**現次數+1,序列總長度為 \(n-2\)

設點 \(i\) 的 egf 為 \(f_(x)\) ,則

\[f_i (x)= \sum_ \frac=e^(w_ix+1)

\]那麼答案就是

\[\begin

ans&= \left[ \frac} \right] \prod_^n w_i \prod_^n f_i(x)\\

&= \left[ \frac} \right] ^^n w_i x} \prod_^n w_i \prod_^n (w_i x+1)

\end

\]這裡前兩個可以預處理,最後乙個揹包做,最後暴力算答案。

複雜度 \(o(n^2)\) 。

t3子任務:可以對整個序列維護乙個大根堆,每次加入乙個數,彈出堆頂元素。

由此可以很自然地得出分塊的做法。

對每個塊維護同樣的乙個堆,並記錄每次加入的數。

整塊情況直接做即可,散塊需要將前面的記錄先結算,此時直接暴力複雜度會退化,注意到壽司和人實際上地位相當,每個數會被修改為經過它的數中最小值,對加入的數維護乙個小根堆,從 \(l\) 到 \(r\) 列舉 \(a_i\) ,將 \(a_i\) 對比並對調。

其實題目就做完了。。。但是卡常挺悲哀的qwq

注意不要直接對所有塊維護小根堆,而是先用 vector 記錄下來,在需要維護整塊資訊(修改散塊前)時用建構函式將 vector 轉成 priority_queue ,原因是 push() 比 push_back() 要慢得多。

2020 09 26 省選組 模擬 總結

估分 60 80 0 140 考場 10 70 0 80 簡單三角形原來可以是凹多邊形。簡單三角形原來可以是凹多邊形。我的方法只能處理凸多邊形的問題,時間複雜度 o n 2 m s q 其實就是將多邊形分成多個三角形,而對於每個三角形,我們可以拆成三個其中乙個節點為原點的三角形。於是我們可以 o n...

2020 01 15 省選組 模擬 總結

這場比賽表示十分不佳。至今未ak 對於 t1t2 這兩道題,為什麼自己剛開始沒有一點想法呢?t3 為什麼最後一步沒有抓住呢?唉,萎了。n m 都很小,而且總共的方案數也不大,顯然可以暴力求出每種字串的 hash 值。然後排個序,判相同概率即可。貪心和 dp 都可以。貪心的話,可以發現越到後面的列,他...

2020 01 09 省選組 模擬 總結

分數就不給出來了。看完 t2 才開始看的。然後發現這題好難。沒打暴力,直接手推想搞正解。後來棄了。然後打了暴力,感覺暴力好像可以優化,但不會。然後就沒了。然後改題時發現真的可以優化。我們可以先求出每個盤子的最終位置,然後在跑小w的程式時特判一下要不要遞迴下去,還是直接跳過並加答案。看完題後,沒什麼想...