【清華集訓】小Y和地鐵

圖已掛,前往luogu

題目:

小 $\rm Y$ 是一個愛好旅行的 $\rm OIer$。一天,她來到了一個新的城市。因爲不熟悉那裏的交通系統,她選擇了坐地鐵。
她發現每條地鐵線路能夠當作平面上的一條曲線,不一樣線路的交點處必定會設有換乘站。經過調查得知,沒有線路是環線,也沒有線路與自身相交。任意兩條不一樣的線路只會在若干個點上相交,沒有重合的部分,且沒有三線共點的狀況。即,如圖所示的狀況都是不存在的:數組

小 $\rm Y$ 坐着地鐵 $0$ 號線,路上依次通過了 $n$ 個換乘站。她記下了每一個換乘站能夠換乘的線路編號,發現每條線路與她所乘坐的線路最多隻有 $2$ 個換乘站。如今小 $\rm Y$ 想知道,除掉她通過的換乘站之外,這個城市裏最少有幾個換乘站。只有你告訴她正確的答案,她纔會答應下次帶你去玩呢。優化

$n\le 44$spa

分析:

首先,咱們先考慮最暴力的方法:3d

咱們發現,對於兩個換乘站,共有$8$種狀況:blog

考慮咱們對每組換乘站進行枚舉,再加上$O(n)$的暴力找交點數,時間複雜度爲$O(n8^\left(\frac{n}{2}\right))$,面對$n\le 44$的數據,顯然會$\rm TLE$。模板

指望得分$\rm 10$。class

考慮尋找這$8$種狀況有沒有重複。搜索

咱們發現,對於第一行的兩種狀況,放到一塊兒,會是這樣的:方法

對於這種狀況,因爲這兩條線產生了一個徹底包住$0$號線的環,咱們發現對於每個其餘的線,要麼不和這兩條線產生交點,要麼對這兩條線每條都產生一個交點。im

因此,無論朝左仍是朝右,結果都是同樣的,咱們只須要枚舉朝上或朝下便可。

時間複雜度$O(n4^\left(\frac{n}{2}\right))$,指望得分$40$分。

再考慮,能不能繼續減小狀況數。

好比,咱們把第一列的兩種放到一塊兒。

這張圖也構成了環,可是這個環並無能把0號線包住,可是這個環把0號線右邊的全部點包住了,也就是在第一個紅點右邊的全部點是不會受到這兩個的選擇的影響的。

而後再來看第一個紅點左邊的狀況,若是你是按左端點從左往右搜索的,你會發現到這步的時候紅點左邊已經搜索完了,即在左邊會進出環的點已經所有決定了,而又由於不會對右邊形成影響,因此咱們能夠貪心地取這兩條環產生交點的最小值。

同理,剩下的也能夠這樣處理。

時間複雜度$O(n2^\left(\frac{n}{2}\right))$。

指望得分$\rm 80$分。

搜索的時間複雜度看上去已經很優了,因此咱們考慮能不能優化找交點的時間複雜度。

考慮咱們從左往搜索,用$a.l,a.r$表示$a$線路的左端點右端點,若只考慮同向,由於$a.l \lt a.r,\;b.l \lt b.r,\; a.l \lt b.l$則有三種狀況:

$$1)\quad a.l\lt b.l\lt b.r \lt a.r$$

$$2)\quad a.l\lt a.r\lt b.l \lt b.r$$

$$3)\quad a.l\lt b.l \lt a.r \lt b.r$$

顯然,只有狀況$3$是相交的。

咱們發現只有$b.l\lt a.r\lt b.r$咱們才須要統計。

是否是很熟悉?你可使用樹狀數組來進行統計。

每一個右端點標記$1$,而後求$[b.l,b.r]$的和便可。

對於朝向問題,顯然左端點的朝向不影響,右端點只有同向纔會相交,能夠自行畫圖,這邊不做演示。

至於代碼,因爲寫的時候比較早,太醜就不放出來了。

時間複雜度$O(2^{\left(\frac{n}{2}\right)}\log n)$,能夠$\rm AC$。

有問題請留言。

後記:

$\rm hyc\;dalao$說這題是$\rm dfs$模板題,實在太強了。

相關文章
相關標籤/搜索