2017 5 11 道路修建 思考記錄

2021-07-31 22:20:11 字數 1174 閱讀 5368

這個線段樹一眼秒了(主要是有前面的思考經驗)

就是維護兩個列對應線段上的形態。,比較好想的

但資料結構題有個特點——使你知道結構也不會做————會做也會很大概率爆零....

所以資料結構題必須 小資料+特殊資料 + 對拍!!!!不然怎麼掛的都不知道、

敲+錯+調+查+調     搞了乙個上午  

這個題用線段樹維護 乙個最小值  合併時需要考慮 不同形態 子圖(其實是樹)的合併方法  

但其實只和兩個端點有關:

看著喪心病狂的up就知道有多難調了(關鍵當時還不知道對不對,寫完需要膽量)

碼:

#include#includeusing namespace std;

#define zuo l,mid,o<<1

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

#define n 60006

int io[n<<2],ii[n<<2],lu[4][n],x,xx,y,yy,z,n,m,i,a,b,ans,cha,oi[n<<2],oo[n<<2],deng[n<<2],linoo,linoi,linio,linii,lindeng,llinio,llinoi,llinii,llinoo,llindeng;

bool yici;

char op;

void up(int o,int mid)

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

jian(zuo);

jian(you);

up(o,mid);

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

else

return ;

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

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

if(b>mid)wen(you);

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

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

else gai(you);

up(o,mid);

}int main()

{scanf("%d%d",&n,&m);

for(i=1;i

bzoj2435 道路修建

道路修建 題目背景 bzoj2435 分析 暴力 dfs 突如其來的傻題 get 直接 dfs,每乙個點對答案的貢獻是,abs n size cur size cur w w 為這個點與父親的連邊的權值 然後就沒有然後了 source created by scarlyw include inclu...

cumtoj修建道路 LCA倍增

題目描述 n nn個點n 1 n 1n 1條邊,點之間兩兩連通,每次詢問3 33個點,求使這3 33個點連通的最小花費。1 n q 1 05 1 leq n,q leq 10 5 1 n,q 105 因為給的是一顆樹,最終的答案就是dis t x,y d ist y,z dis t x,z 2.fr...

SDOI2015 道路修建

傳送門 線段樹維護最小生成樹。兩個結點合併就是把兩個結點之間的兩條橫邊加上後形成乙個環,然後剪掉環上的最大值即可得到當前最小生成樹。不會證 於是現在只需要考慮怎麼找最大值。首先這個環一定是如下構成 兩邊是左節點的最右豎邊和右節點的最左豎邊,然後中間是所有的上下兩行橫邊。如下圖紅色部分。那麼發現維護每...