[DMY]2024 CSP-S 模擬賽 Day 10

Redamancy_Lydic發表於2024-10-05

賽時

對於 T1,看懂題面以後感覺很可做。

首先明確正解複雜度應該是基於 \(N\) 額度線性做法。

把輸入按照開始時間排序,然後依次處理。

賽時考慮到一個元素在覆蓋過程中遇到其他元素時無法確定時間先後,確定後想要找到該元素的當前位置和重新覆蓋有些困難,寫了 1h 以後先放棄了。

舍遠求近,基於時間寫了一個 \(\mathcal{O}(nk)\) 的做法,發現時間很大,用 20min 對時間進行離散化,跑過了小樣例。

先不管 T1,去看 T2。

T2 的話可以根據正負性列方程搜尋求解,複雜度 \(\mathcal{O}(2^n)\)

想了一會發現並不是太會低複雜度做法,先去看後面的題。

T3 和 T4 一開始的時候都不太會暴力做法,這時候我面臨去改 T1 還是繼續拿暴力分的選擇。

上個廁所回來回了 T3 和 T4 的暴力做法。

T3 的話為了在遍歷的時候複雜度低於 \(n^2\) 做到 \(nlogn\) 使用了 set,賽後發現 T 了導致爆蛋。

T4 的話使用 Floyd 硬搞,複雜度 \(n^5\),一遍就過掉了樣例。

時間還剩下 1h,看別人都過掉了 T1,便回去改 T1。

想到了一個利用優先佇列找時間節點的方法,程式碼很長,用 30min 寫了一個將近 200 行的程式碼,剩下的時間都在挑,結果到最後也沒有調出來。

賽後

班裡的分數差距主要在於 T1。

如果當時沒有去寫暴力分並且 A 掉 T1 的話,我將以 110 分的成績擠進首頁。

但是 T3 暴力寫掛了,T1 只拿了 50 分。

想想看來 T1 其實很簡單,賽時沒有考慮到按照時間排序以後其實可以直接大膽覆蓋,不會出現佔用狀況。

正解其實很短,可以做一個多源 bfs 最短路。

T3 的話主要是 set 浪費了時間,賽時其實使用 vector 的話也可以做到低於 \(n^2\)。這個不難想,但是賽時沒有想出來。

打的不太好,差距主要還是在 T1。