2017 9 9 堵塞的交通 思考記錄

2021-08-07 23:18:23 字數 2141 閱讀 2672

三分太難了、於是來寫線段樹、

、維護四個點之間的連通性、、然後就沒了。

然後把n定義成bool、狂wa不止、

以後資料結構題不寫對拍就不要交!

你一定要足夠的相信你的程式很多地方都是錯的、

碼:

#include#includeusing namespace std;

#define zuo o<<1,l,mid

#define you o<<1|1,mid+1,r

#define n 100005

bool lt[n<<2][5][5],tu[n][3],tu2[n],yici,lin[5][5],lin2[5][5],zj[5][5],sd[5][5],hn[5][5];

int a,b,x,y,n;

char ch[5555];

void up(int o,int mid)

void jian(int o,int l,int r)

int mid=(l+r)>>1;

jian(zuo);

jian(you);

up(o,mid);} 

void gai(int o,int l,int r)

int mid=(l+r)>>1;

if(a<=mid)   gai(zuo);

if(b>mid)    gai(you);

up(o,mid);} 

void wen(int o,int l,int r)

for(i=1;i<=4;i++)

for(j=1;j<=4;j++)

lin2[i][j]=0;

//判斷24聯通        

if(lt[o][2][4])lin2[2][4]=lin2[4][2]=1;

if(tu[l-1][1]&&tu[l-1][2]&<[o][2][1]&&lin[2][4]&<[o][3][4]) lin2[2][4]=lin2[4][2]=1;

//判斷1 3聯通

if(lin[1][3])lin2[1][3]=lin2[3][1]=1;

if(tu[l-1][1]&&tu[l-1][2]&&lin[2][1]&<[o][1][3]&&lin[3][4]) lin2[1][3]=lin2[3][1]=1;

//判斷1 2聯通

if(tu[l-1][1]&&lin[1][2]&<[o][1][2])lin2[1][2]=lin2[2][1]=1; 

if(tu[l-1][2]&&lin[1][4]&<[o][3][2])lin2[1][2]=lin2[2][1]=1;  

//判斷1 4聯通

if(tu[l-1][1]&&lin[1][2]&<[o][1][4])lin2[1][4]=lin2[4][1]=1; 

if(tu[l-1][2]&&lin[1][4]&<[o][4][3])lin2[1][4]=lin2[4][1]=1;  

//判斷2 3聯通

if(tu[l-1][1]&&lin[3][2]&<[o][1][2])lin2[2][3]=lin2[3][2]=1; 

if(tu[l-1][2]&&lin[3][4]&<[o][3][2])lin2[2][3]=lin2[3][2]=1;  

//判斷3 4聯通

if(tu[l-1][1]&&lin[3][2]&<[o][1][4])lin2[3][4]=lin2[4][3]=1; 

if(tu[l-1][2]&&lin[3][4]&<[o][3][4])lin2[3][4]=lin2[4][3]=1;  

for(i=1;i<=4;i++)

for(j=1;j<=4;j++)

lin[i][j]=lin2[i][j];

return;

}int mid=(l+r)>>1;

if(a<=mid)wen(zuo);

if(b>mid)wen(you);   

}int main()

if(ch[0]=='c')

if(ch[0]=='a')

if(y==2&&yy==1)

if(y==2&&yy==2)

if(y==1&&yy==2)

if(ky)printf("y\n");

else printf("n\n");     }}

}

bzoj 1018 堵塞的交通

傳送門 這是一道好題,不容易想到線段樹和維護的量。分析題目,考慮聯通方式,發現只有3種,我一開始的想法是結構分塊,使用並查集維護,o 1 新增很自然,刪除的話就暴力重建塊內的並查集o sqrt n 查詢的時候仍然考慮並查集維護,求出關鍵點 上下左右4個 和他們之間的聯通性,數量級是o sqrt n ...

SHOI2008 堵塞的交通

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

SHOI2008 堵塞的交通

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