北大集訓2018墊底記

day0

  早上五點半起來趕飛機。網絡

  下午到北大報到,而後是試機。函數

  試機賽有一道 PKUSC 原題,一道造計算機題,一道交互通訊題。感受要完。由於我既不會造計算機也不會通訊題。優化

  農園一樓的菜仍是挺好的,就是有點貴。隨便吃一點就要 15+,吃好一點就要 25+。spa

day1

  開場先看題,而後感受第一題挺可作的,就頭鐵去寫 t1 了。最終寫了兩個小時仍是寫出來了。調試

  而後去看第二題,先把暴力寫了。又看到有一個全部數都是某個質數的冪的子任務,也去寫了一下。最開始寫了個比較複雜的作法,後來想到只須要記指數的差就行了,改了一下就過了那個子任務。class

  第三題想了很久仍是不會,只能打暴力了。重構

  得分:100+49+25=174方法

  出考場後據說有人兩個多小時就AK離場了。。。im

  下午講評,三題都挺簡單的,均可以放成聯賽模擬了,但我就是寫不出來。我退役吧。通信

  晚上回賓館睡覺。

題解

A

  這個質心座標好像不是全部頂點座標之和的平均數啊?

  只用求出每一個頂點最早接觸地面的時間再取個min就行了。

  對於每一個頂點,它的 \(y\) 座標是一個二次函數+正弦函數的形式,那麼能夠先求出最先碰到地面的時間是在正弦函數的那個週期內,而後求一下導二分一下獲得這個週期內的單調區間,再在單調降低的區間內二分獲得答案。

  時間複雜度:\(O(n\log^{-1}\epsilon)\)

B

  記 \(x_i=\frac{b_i}{d_i},y_i=d_i\)

  那麼 \(\prod b_i\leq \prod d_i^2\Longleftrightarrow \prod x_i\leq \prod y_i\)

  注意到 \(\prod x_i<\prod y_i\) 的方案是和 \(\prod x_i>\prod y_i\) 的方案一一對應的,因此咱們只須要求出總的方案數和以及

\(\prod x_i=\prod y_i\) 的方案數就行了。

  時間複雜度:\(O(n\sqrt a_i+n\log^2a_i)\)

C

  注意到把一棵樹的點分樹沿着原樹中的一條邊切開後獲得的兩棵樹是每一個點選擇他在對應那棵子樹中的最近祖前後連成的樹。那麼反過來也能夠把兩棵點分樹拼在一塊兒,就是把那條邊的兩個端點到根的路徑按任意順序拼在一塊兒。

  記 \(f_{i,j}\) 爲以 \(i\) 爲根的子樹構成的點分樹中,\(i\) 的深度爲 \(j\) 的方案數。

  轉移爲
\[ f'_{i,j}=\sum_{k1}\sum_{k2}f_{i,k1}f_{v,k2}\binom{j-1}{k1-1} \]
  大概是這樣吧

  搞個後綴和優化一下就行了。

day2

  看完題以後感受第三題比較簡單,弄個指數生成函數再反演幾下就行了。

  而後去看第一題,想了一會想到了 \(O(n\sqrt n\log^2n)\) 的垃圾作法,顯然過不了。又想了一會,就放棄去寫暴力+一些部分分。

  t2 先寫了個暴力,打了個表發現了一點規律,就是每一行的最左邊一個到最右邊一個 \(1\) 中只有前面幾個位置可能有 \(0\)。這樣 DP 就只用 DP 每行的前面一部分就行了。

  得分:\(55+49+100\)

  然而又有人AK了。我退役吧。

題解

A

  首先你要會 \(O(n+m)\) 的無修改的作法。

  考慮每加入 \(O(\sqrt m)\) 個修改就重構一次,詢問的時候就把沒有扔進去重構的修改單獨計算一下貢獻。

  時間複雜度:\(O((n+m)\sqrt m)\)

B

  先把所有周長 \(\div 2\)

  考慮一個 \(1\times 1\) 的矩形,能把 \((x,y)\) 的方案變成 \((x+1,y+2)\) 的方案。

  記 \(f_i\)\(2S-C=i\) 的方案中 \(S\) 最小的是多少。

  還有一個結論:寬 \(\geq 2\) 的矩形中每種寬只會出現一次。由於你能夠把兩個 \(a\times b\)\(a\times c\) 的矩形變成 \(1\times a\)\(a\times (b+c-1)\) 的矩形。

  後面的部分我忘了,想起來再補。

  時間複雜度:\(O(n\sqrt n)\)

C

  記 \(f_i\) 爲把 \(1\sim n\) 的排列分紅 \(i\) 段,每段內都是上升的且每段的最後一個大於下一段的第一個的方案數。

  記 \(g_i\) 爲把 \(1\sim n\) 的排列分紅 \(i\) 段,每段內都是上升的的方案數。

  那麼 \(g_i\) 就是第二類斯特林數 \(S(n,i)\)

  在容斥一下就能夠獲得 \(f_i\)

  時間複雜度:\(O(n\log n)\)

day3

  開場先看題,發現 t2 的 80 分以前作過,直接 lct+線段樹就行了。而後碼了半個小時交上去拿到了 80分。

  而後去看第三題,直接把 t2 的代碼複製過去加點東西就行了。

  t1 不會造計算機,只會三個部分分。

  最後自閉了一個小時。

  得分:15+80+100

題解

A

  弄一個校驗碼。單個數的校驗碼 \(\bmod P=C\),多個數的校驗碼就把單個數的校驗碼異或在一塊兒就行了。若是 \(\bmod P=C\),說明只有一個出現了奇數次的數。

  而後弄 15 個哈希函數,把全部數扔進 15 個桶內,每一個桶中有 1/2 的機率異或每一個值。

  最後枚舉全部 \(2^{15}\) 個桶的組合,若是隻有一個數就輸出。

  \(F_2\) 下的 \(15\times 10\) 的矩陣滿秩的機率約爲 \(96\%\),再加上校驗碼的偏差,正確率爲 \(90\%+\)

B

  不會。

C

  先用 lct+可持久化線段樹處理全部區間的代價。

  而後決策單調性優化DP便可。

  時間複雜度:\(O(nk\log^2n)\)

day4

  先開 t1。感受細節會不少,想了一會沒想到什麼好的作法,就寫暴力,下一題。

  t2 猜想是網絡流,試了幾種建模方法都不對,就寫暴力,下一題。

  t3 以前據說過矩乘能夠分塊作,就寫了矩乘 ,把整個 \(125\times 125\) 的網格分紅 \(5\times 5\)\(25\times 25\) 的子矩陣,而後每一個節點負責算一個子矩陣的矩陣乘法,最後把全部節點算的結果再傳回來。總共要 \(3\times n^{\frac{2}{3}}+1=76\) 輪。

  這個通訊題寫起來挺麻煩的,各類座標都要手算,調試也很不方便,寫了很久纔拿到分。

  而後就自閉了。

  得分:\(24+8+61\)

題解

A

  注意到初始的 dis 值只有 \(2^{60}\),而不是 \(n\times 2^{60}\)

  大概就是讓每一個點的 dis 是最短路的時候才更新其餘點。

  \(rank_x\)\(x\) 是第幾個 dis 值達到最短路的。

  第 \(i\) 次入隊時 dis 變成 \(2^{60}-i\)

  最後一次時 dis 變成 \(rank_x\times k\)

B

  連通塊個數最多等價於沒修路的邊數最少。

  而後就直接費用流建圖了。S 連到左邊的點下限 1 上限 \(k\) ,右邊的點連到 T 下限 1 上限 \(k\),每條邊費用\(-\infty\),那麼就是最大費用(最小/可行)流了。注意不是最大費用最大流。

C

  個人作法每輪每一個點只能向 \(25\) 個點發信息。由於每一個點每輪只能向同一個點發送一條信息。

  那麼怎樣發送更多信息呢?

  轉發!

  假設 \(A\) 要向 \(B\) 發送 \(25\) 個信息,那麼咱們就能夠先由 \(A\)\(25\) 個節點發信息,而後下一輪這 \(25\) 個節點再向 \(B\) 發信息。

  這樣就能夠把輪數優化到 \(6n^{\frac{1}{3}}+1=31\) 輪。

相關文章
相關標籤/搜索