bzoj3995 道路修建題解

2021-08-30 04:15:47 字數 2077 閱讀 8981

前陣子本想一本正經的寫一篇關於字尾樹入門較為詳細的文章,由於博主又懶了,然後……

今天覺得心情愉快,於是突發奇想,要更新一篇部落格,於是就有了這篇部落格……就是這樣。

#include

"cstdio"

#include

"algorithm"

#define maxn (60000+10)

#define ll long long

using

namespace std;

inline

intread()

while

(ch>=

'0'&&ch<=

'9') x=x*

10+ch-

'0',ch=

getchar()

;return x*f;

}int lmaxv[maxn<<2]

,rmaxv[maxn<<2]

,lv[maxn<<2]

,rv[maxn<<2]

,sumv[maxn<<2]

;int t[3]

[maxn]

,s[maxn]

;int ans,a,aa;

int n,m;

void

maintain

(int o,

int l,

int r)

else

if(maxk==s[rv[o<<1]

]&&rv[o<<1]

==lv[o<<1]

)else

}void

build

(int o,

int l,

int r)

int mid=

(l+r)

>>1;

build

(o<<

1,l,mid)

;build

(o<<1|

1,mid+

1,r)

;maintain

(o,l,r);}

void

query

(int o,

int x,

int y,

int l,

int r)

return;}

int mid=

(l+r)

>>1;

if(x<=mid)

query

(o<<

1,x,y,l,mid);if

(y>mid)

query

(o<<1|

1,x,y,mid+

1,r);}

void

change1

(int o,

int x,

int l,

int r)

int mid=

(l+r)

>>1;

if(x<=mid)

change1

(o<<

1,x,l,mid)

;else

change1

(o<<1|

1,x,mid+

1,r)

;maintain

(o,l,r);}

void

change2

(int o,

int x,

int y,

int l,

int r)

int mid=

(l+r)

>>1;

if(mid>=x)

change2

(o<<

1,x,y,l,mid);if

(y>mid)

change2

(o<<1|

1,x,y,mid+

1,r)

;maintain

(o,l,r);}

intmain()

else

else}}

return0;

}

難度還是蠻簡單的,才怪上年我問別人怎麼做時,被mai老師一臉鄙視的罵了一頓。

調的時候犯了4個沙茶錯誤,浪費好多時間,/dk/dk/dk

bzoj3995 SDOI2015 道路修建

題目鏈結 分析 曲神的題解 曲神表示想要結構體版本的 題解最後給出的就是結構體的 bzoj1018的高階版 一開始看到這道題 好像不是很難,用線段樹維護最小生成樹 update的時候直接判斷上下哪一條橫邊比較小,連線即可 然而一下就發現了bug 存在可能性連線點的上下兩條邊都需要連線 那我們就要深入...

bzoj2435 道路修建

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

bzoj 2435 道路修建

written with stackedit.在 w 星球上有 n 個國家。為了各自國家的經濟發展,他們決定在各個國家 之間建設雙向道路使得國家之間連通。但是每個國家的國王都很吝嗇,他們只願意修建恰好 n 1 條雙向道路。每條道路的修建都要付出一定的費用,這個費用等於道路長度乘以道路兩端的國家個數之...