SHOI2008 堵塞的交通

2022-05-10 22:26:23 字數 2737 閱讀 6930

有一天,由於某種穿越現象作用,你來到了傳說中的小人國。小人國的布局非常奇特,整個國家的交通系統可

以被看成是乙個2行c列的矩形網格,網格上的每個點代表乙個城市,相鄰的城市之間有一條道路,所以總共有2c個

城市和3c-2條道路。 小人國的交通狀況非常槽糕。有的時候由於交通堵塞,兩座城市之間的道路會變得不連通,

直到擁堵解決,道路才會恢復暢通。初來咋到的你決心毛遂自薦到交通部某份差事,部長聽說你來自乙個科技高度

發達的世界,喜出望外地要求你編寫乙個查詢應答系統,以挽救已經病入膏肓的小人國交通系統。 小人國的交通

部將提供一些交通資訊給你,你的任務是根據當前的交通情況回答查詢的問題。交通資訊可以分為以下幾種格式:

close r1 c1 r2 c2:相鄰的兩座城市(r1,c1)和(r2,c2)之間的道路被堵塞了;open r1 c1 r2 c2:相鄰的兩座城

市(r1,c1)和(r2,c2)之間的道路被疏通了;ask r1 c1 r2 c2:詢問城市(r1,c1)和(r2,c2)是否連通。如果存在一

條路徑使得這兩條城市連通,則返回y,否則返回n;

第一行只有乙個整數c,表示網格的列數。接下來若干行,每行為一條交通資訊,以單獨的一行「exit」作為

結束。我們假設在一開始所有的道路都是堵塞的。我們保證 c小於等於100000,資訊條數小於等於100000。

對於每個查詢,輸出乙個「y」或「n」。

2open 1 1 1 2

open 1 2 2 2

ask 1 1 2 2

ask 2 1 2 2

exityn

線段樹中區間[l, r]儲存(1, l)、(2, l)、(1, r)、(2, r)四個點兩兩間的連通性,總共有6種

合併:橫向邊用2個陣列ru和rd儲存,用於合併,對於6個連通性,一一合併

修改:修改橫向邊時,修改ru和rd陣列,然後從下往上合併

修改縱向邊時,修改該區間內四種狀態,然後從下往上合併

查詢:優於可能存在這樣的情況:

所以[1,c1],[c1,c2],[c2,n]的連通情況都要算出來

然後根據r1,r2判斷就行了

SHOI2008 堵塞的交通

有一篇超級棒的線段樹 大力分類討論的題解!戳我 可是我還是不會寫這個做法qwqwqwq 這裡提供線段樹分治的寫法。感覺比較不需要智商,就是跑的有點慢了。include include include include include include include include define max...

SHOI2008 堵塞的交通

這裡提供幾種不用腦子的演算法 當然是離線的 text 記下每條邊的刪除時間,用 text 維護最大生成樹,每次加進一條邊時,跟原來那條鏈上的做比較,刪除那條刪除時間最短的邊即可。線段樹分治 這個演算法將每條邊的加入和刪除時間加入到線段樹中,所以在遍歷到葉子節點時,那個時刻存在的邊都已經在並查集上了,...

SHOI2008 堵塞的交通

題目描述 有一天,由於某種穿越現象作用,你來到了傳說中的小人國。小人國的布局非常奇特,整個國家的交通系統可 以被看成是乙個2行c列的矩形網格,網格上的每個點代表乙個城市,相鄰的城市之間有一條道路,所以總共有2c個 城市和3c 2條道路。小人國的交通狀況非常槽糕。有的時候由於交通堵塞,兩座城市之間的道...