time limit: 20 sec
memory limit: 64 mb [
submit][
status][
discuss]
毛毛蟲經過及時的變形,最終逃過的一劫,離開了菜媽的菜園。 毛毛蟲經過千山萬水,歷盡千辛萬苦,最後來到了小小的紹興一中的校園裡。爬啊爬~爬啊爬~~毛毛蟲爬到了一顆小小的「毛景樹」下面,發現樹上長著他最愛吃的毛毛果~~~ 「毛景樹」上有n個節點和n-1條樹枝,但節點上是沒有毛毛果的,毛毛果都是長在樹枝上的。但是這棵「毛景樹」有著神奇的魔力,他能改變樹枝上毛毛果的個數: change k w:將第k條樹枝上毛毛果的個數改變為w個。 cover u v w:將節點u與節點v之間的樹枝上毛毛果的個數都改變為w個。 add u v w:將節點u與節點v之間的樹枝上毛毛果的個數都增加w個。 由於毛毛蟲很貪,於是他會有如下詢問: max u v:詢問節點u與節點v之間樹枝上毛毛果個數最多有多少個。
第一行乙個正整數n。 接下來n-1行,每行三個正整數ui,vi和wi,第i+1行描述第i條樹枝。表示第i條樹枝連線節點ui和節點vi,樹枝上有wi個毛毛果。 接下來是操作和詢問,以「stop」結束。
對於毛毛蟲的每個詢問操作,輸出乙個答案。
41 2 8
1 3 7
3 4 9
max 2 4
cover 2 4 5
add 1 4 10
change 1 16
max 2 4
stop916
【data range】
1<=n<=100,000,操作+詢問數目不超過100,000。
保證在任意時刻,所有樹枝上毛毛果的個數都不會超過10^9個。
change應該比modify優先順序高
這道題我沒有壓到100行以內
#include#include#include#define inf 0x7fffffff
const int n = 100000 + 5;
using namespace std;
int cnt=1,n,sz; char ch[10];
int pos[n],bel[n],last[n],dep[n],siz[n],anc[n][20],id[n];
int ls[n<<2],rs[n<<2],mx[n<<2],l[n<<2],r[n<<2],mf[n<<2],af[n<<2],root,idd;
struct edgee[n<<1];
void insert(int u,int v,int w)
void build( int &k, int l, int r )
void update( int k )
void pushdown( int k ) if( af[k] )
}void change( int k, int x, int y, int v )
int mid = (l[k]+r[k])>>1;
if( mid >= y ) change(ls[k],x,y,v);
else if( mid < x ) change(rs[k],x,y,v);
else
update(k);
}void modify( int k, int x, int y, int v )
int mid = (l[k]+r[k])>>1;
if( mid >= y ) modify(ls[k],x,y,v);
else if( mid < x ) modify(rs[k],x,y,v);
else
update(k);
}int query( int k, int x, int y )
void solve_change( int x, int f, int v )
if( pos[f]+1 <= pos[x] ) change(root,pos[f]+1,pos[x],v);
}void solve_modify( int x, int f, int v )
if( pos[f]+1 <= pos[x] ) modify(root,pos[f]+1,pos[x],v);
}int solve_query( int x, int f )
if( pos[f]+1 <= pos[x] ) res = max(res,query(root,pos[f]+1,pos[x]));
return res;
}void dfs1( int x, int f ) else
if( !k ) return; dfs2(k,chain);
for( int i = last[x]; i; i = e[i].next )
if( dep[e[i].to] > dep[x] && e[i].to != k ) dfs2(e[i].to,e[i].to);
}int lca( int x, int y )
int main()
}}
BZOJ1984 月下「毛景樹」
time limit 20 sec memory limit 64 mb submit 1583 solved 500 submit status discuss 毛毛蟲經過及時的變形,最終逃過的一劫,離開了菜媽的菜園。毛毛蟲經過千山萬水,歷盡千辛萬苦,最後來到了小小的紹興一中的校園裡。爬啊爬 爬啊...
bzoj1984 月下「毛景樹」
傳送門 果然強校出的題都有坑 好吧其實是我太弱 都知道化邊權為點權了還沒發現鏈上查詢和修改時的坑 知道了這個這題就是板子題了 code include includeusing namespace std define n 100005 struct tree t n 2 int f n deep ...
BZOJ1984 月下「毛景樹」
題目 月下 毛景樹 解析 樹鏈剖分。注意一下線段樹的標記下傳的問題,先下傳覆蓋標記再下傳增加標記,且下傳覆蓋標記後要將增加標記取消。詳見 算了還是說下問什麼這樣下傳標記吧。如果先下傳add再下傳cover,你會發現對於修改同一區間,操作順序是先add再cover時下傳沒有問題,但如果是先cover再...