JOI Open 中一些沒有題解的題的簡要題解

2022-09-14 18:36:11 字數 771 閱讀 5265

雖然好像沒啥人做,但還是先放著,相信總是有人來看的。

容易說明最終路徑一定只有以下兩種情況:

然後直接線段樹優化建圖跑 bfs 即可,總複雜度 \(o(n\log n)\)

經過一些觀察,對於一條邊,他把整個圓分成了兩段弧,那麼與這條邊相交的邊至多只有 min 兩段弧長度 條。此時猜測最優構造中這個上界可以達到。設黑點座標分別為 \(a_i\),白點座標為 \(b_i\),那麼最終匹配方案一定是 \(a_i\) 與 \(b_\) 連邊。

然後隨便加點什麼優化就好了。

設 \(f_u\) 為只考慮 \(u\) 子樹內的節點的答案。轉移的時候若 \(u\) 子樹內有被選中的點,那麼 \(u\) 就會被燒壞,因為如果只有乙個子樹被選,這種情況要麼會在這個子樹裡被算到,要麼可以在上面再選乙個點,所以這個貪心是對的。

然後統計答案是簡單的。

發現如果把題目中的比較方式丟到 sort 裡面會得到若干段遞減的總體上公升的序列,且每一段都不長,即 3 2 1 5 4 8 7 6 這樣。

那麼先直接做一次歸併排序,然後對得到的結果略加修改即可。

看上去暴力動態 dp 就好了。

先觀察一下詢問的本質是什麼,是詢問乙個點的字首,乙個時間的字首的連通塊個數。

考慮回滾莫隊,對時間維度回滾,然後用可撤銷並查集維護邊集,這樣總複雜度為 \(o(n\sqrt n \log n)\)。你看上去這很慢,但我只跑了時限的 \(1/5\)。

詢問所有的 \((i,i+1)\) 和 \((i,i+2)\),然後可以判斷 \((a_i-a_)(a_-a_)\) 的正負性。就做完了。

PB中一些技巧

取資料視窗中可列新的表名。string ls table ls table dw 1.describe datawindow.updatetable.table 22.取資料視窗物件中列的名稱及型別 string ls cols,ls types intli count,i li count int...

php中一些知識

file 的路徑是當前 所在檔案 dirname dirname file 得到的是檔案上一層目錄名 dirname file 得到的是檔案所在層目錄名 require其實是乙個直譯器解釋的過程,比如當我們在乙個檔案中require另乙個檔案的時候,其實是先解釋另乙個檔案。php中的檔案a的過程中假...

PB中一些技巧

取資料視窗中可列新的表名。string ls table ls table dw 1.describe datawindow.updatetable.table 22.取資料視窗物件中列的名稱及型別 string ls cols,ls types intli count,i li count int...