這個線段樹一眼秒了(主要是有前面的思考經驗)
就是維護兩個列對應線段上的形態。,比較好想的
但資料結構題有個特點——使你知道結構也不會做————會做也會很大概率爆零....
所以資料結構題必須 小資料+特殊資料 + 對拍!!!!不然怎麼掛的都不知道、
敲+錯+調+查+調 搞了乙個上午
這個題用線段樹維護 乙個最小值 合併時需要考慮 不同形態 子圖(其實是樹)的合併方法
但其實只和兩個端點有關:
看著喪心病狂的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 道路修建
傳送門 線段樹維護最小生成樹。兩個結點合併就是把兩個結點之間的兩條橫邊加上後形成乙個環,然後剪掉環上的最大值即可得到當前最小生成樹。不會證 於是現在只需要考慮怎麼找最大值。首先這個環一定是如下構成 兩邊是左節點的最右豎邊和右節點的最左豎邊,然後中間是所有的上下兩行橫邊。如下圖紅色部分。那麼發現維護每...