2022 杭電第三場題解

2022 杭電第三場題解

11 給隊友貢獻了 10 發罰時哈哈哈哈哈哈哈哈哈

1 Equipment Upgrade

當時我把這題丟給隊友,隊友寫了一會兒就 A 了,我還以爲什麼簡單題,結果賽後一看不會做。。。

怎麼說呢,把所有 \(E\) 表示成 \(a\times E_0+b\) 確實挺妙的。剩下的就是分治 FFT 了。

2 Boss Rush

隊友做的,我還沒看。

3 Cyber Language

不知爲何要 T 讀入後要 getchar 一下,不是很懂。

4 Divide the Sweets

優美的暴力。範圍小要往 meet in the middle 想。

5 Spanning Tree Game

賽後改一下就過了,我超。10436 ms,喜提最劣解。

首先先將邊拆成兩條邊。小的邊可以選或不選,大的邊一定選。在 Kruskal 算法中,小的邊一定會先選,所以這樣不影響正確性。

之後發現,不同的邊用最小表示法後連通情況很少,\(Bell(9)=21147\),我賽後才反應過來這是貝爾數。

然後就是一個類似 dp 套 dp 的東西,\(f(i,j,k)\) 表示前 i 條邊選了 j 條 a 的邊連通編號爲 k 的最大的最小生成樹,之後就枚舉這條邊是否選,如果選了是否對連通情況產生影響。直接轉移即可。

注意點:

  1. \(a<b\)\(a>b\) 是兩種情況,\(a>b\) 的時候 dp 到 b,那麼不選 j 要 +1。
  2. 是最大生成樹,Alice 會選擇所有選 k 條 a 的最大的。
  3. 不選和選了對連通情況不產生影響是不一樣的,要視爲兩種轉移。

6 Dusk Moon

我居然都不記得自己學過最小圓覆蓋。。。

挺有趣的一道題。隨機下凸包的期望點數是 \(\log n\),證明類似單調棧的證法,但又有點不一樣。能覆蓋凸包一定能覆蓋所有點,對凸包裏的點做最小圓覆蓋即可。

8 Laser Alarm

計算幾何苦手隊的第一道計算幾何哈哈哈哈哈哈

可以通過調整,最大的平面一定經過三個端點,那麼直接枚舉平面,與向量相交即可。注意全共線的情況要特判。

9 Package Delivery

考慮貪心,每個包裹都儘量拖到最後一天,這樣能一次拿一定最多。排序後用堆即可。

10 Range Reachability Query

挺有趣的分塊題。首先 dag 到達性問題就沒有 polylog 做法,看到 n=50000 和 10000ms 直接猜 bitset。這題 nb 的地方在它把詢問放進了 bitset 裏面,然後倒序轉移一遍。省空間的方法也是老方法了。

11 Taxi

我的解法是整體二分去掉 \(w_k\) 的限制,然後轉成切比雪夫距離,維護 x 和 y 的最小和最大值即可。

賽中寫了 kd 樹,cdq 分治,都卡不過去,一個 log 都跑了 1800ms+。有點卡常。

12 Two Permutations

先特判不是兩個排列的情況。若是兩個排列,那麼相同值的位置只有兩個,直接暴力轉移即可。隊友用了 map 和 unordered_map 都沒卡過去,改成 vector 反而過了。有點奇怪。

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