SHOI2008 堵塞的交通

2022-07-13 19:24:13 字數 2067 閱讀 8023

題目描述

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

以被看成是乙個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;

題解

這麼**的題我居然能一a。。。

我寫的比較麻煩,用二元組[0/1][0/1]來表示當前矩形的四個角,再去維護每個小矩形,線段樹維護合併後的大矩形。

討論比較噁心。。

**

#include#include

#include

#define n 100009

using

namespace

std;

char s[10

];int

n;inline

intrd()

while(isdigit(c))

return f?-x:x;

}struct

node

inline

void clear()

inline

void

print()

}now[n];

struct

segtr[n

<<1

];int tot=1

;void build(int cnt,int l,int

r)void upd(int cnt,int l,int r,int tag,int x,int

y)

int mid=(l+r)>>1

;

if(mid>=x)upd(tr[cnt].ls,l,mid,tag,x,y);

else upd(tr[cnt].rs,mid+1

,r,tag,x,y);

tr[cnt].val=tr[tr[cnt].ls].val+tr[tr[cnt].rs].val;

}node _query(

int cnt,int l,int r,int x,int

tag)

int mid=(l+r)>>1

;

if(mid>=x)return

_query(tr[cnt].ls,l,mid,x,tag);

else

return _query(tr[cnt].rs,mid+1

,r,x,tag);

}node query(

int cnt,int l,int r,int l,int

r)int

main()

else upd(1,1,n-1,r1,min(x,y),0

); }

else

if(s[0]=='o'

)

else upd(1,1,n-1,r1,min(x,y),1

); }

else

else

}else

else

}if(ans)puts("

y");else puts("n"

); }

}return0;

}

SHOI2008 堵塞的交通

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

SHOI2008 堵塞的交通

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

SHOI2008 堵塞的交通

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