背景:爍爍很喜歡爬樹,這嚇壞了樹上的皮皮鼠。
題意:給定一顆n個節點的樹,邊權均為1,初始樹上沒有皮皮鼠。
爍爍他每次會跳到乙個節點u,把周圍與他距離不超過d的節點各吸引出w只皮皮鼠。皮皮鼠會被爍爍吸引,所以會一直待在節點上不動。
爍爍很好奇,在當前時刻,節點u有多少個他的好朋友---皮皮鼠。
大意:給一顆n個節點的樹,邊權均為1,初始點權均為0,m次操作:
q x:詢問x的點權。
m x d w:將樹上與節點x距離不超過d的節點的點權均加上w。
第一行兩個正整數:n,m
接下來的n-1行,每行三個正整數u,v,代表u,v之間有一條邊。
接下來的m行,每行給出上述兩種操作中的一種。
對於每個q操作,輸出當前x節點的皮皮鼠數量。
7 61 2
1 41 5
2 32 7
5 6m 1 1 2
q 5m 2 2 3
q 3m 1 2 1
q 2236
和震波很像,查詢修改反過來就好了。
**:
1 #include2 #include3 #include4const
int n=100010;5
struct
pntp[n];
17struct
trnttr[40000000
];22
struct
ente[n<<1
];26
intn,m;
27int
cnt;
28int
siz;
29int
root;
30int
size;
31int
maxsize;
32char cmd[1000
];33
void ade(int f,int
t)34
41void basic_dfs(int x,int
f)4259}
60return;61
}62void build_dfs(int x,int
top)
6375
return;76
}77int lca(int x,int
y)78
85if(p[x].dis>p[y].dis)
86std::swap(x,y);
87return
x;88}89
int dis(int x,int
y)90
94void grc_dfs(int x,int
f)95
108 maxs=std::max(maxs,size-p[x].wgt);
109if(maxs110114
return
;115
}116
void bin_dfs(int x,int
f)117
135return
;136
}137
void update(int &spc,int l,int r,int ll,int rr,int
v)138
148int mid=(l+r)>>1
;149
update(tr[spc].ls,l,mid,ll,rr,v);
150 update(tr[spc].rs,mid+1
,r,ll,rr,v);
151return
;152
}153
int query(int spc,int l,int r,int
pos)
154167
void update(int x,int k,int
val)
168178
return
;179
}180
int query(int
x)181
188return
ans;
189}
190int
main()
191200 basic_dfs(1,1
);201 build_dfs(1,1
);202 root=0
;203 size=n;
204 maxsize=0x3f3f3f3f
;205 grc_dfs(1,1
);206 bin_dfs(root,0
);207
while(m--)
208else
220}
221return0;
222 }
BZOJ4372 爍爍的遊戲
背景 爍爍很喜歡爬樹,這嚇壞了樹上的皮皮鼠。題意 給定一顆n個節點的樹,邊權均為1,初始樹上沒有皮皮鼠。爍爍他每次會跳到乙個節點u,把周圍與他距離不超過d的節點各吸引出w只皮皮鼠。皮皮鼠會被爍爍吸引,所以會一直待在節點上不動。爍爍很好奇,在當前時刻,節點u有多少個他的好朋友 皮皮鼠。大意 給一顆n個...
BZOJ 4372 爍爍的遊戲
背景 爍爍很喜歡爬樹,這嚇壞了樹上的皮皮鼠。題意 給定一顆n個節點的樹,邊權均為1,初始樹上沒有皮皮鼠。爍爍他每次會跳到乙個節點u,把周圍與他距離不超過d的節點各吸引出w只皮皮鼠。皮皮鼠會被爍爍吸引,所以會一直待在節點上不動。爍爍很好奇,在當前時刻,節點u有多少個他的好朋友 皮皮鼠。大意 給一顆n個...
BZOJ 4372 爍爍的遊戲 動態點分治
time limit 30 sec memory limit 512 mb submit 804 solved 288 submit status discuss 背景 爍爍很喜歡爬樹,這嚇壞了樹上的皮皮鼠。題意 給定一顆n個節點的樹,邊權均為1,初始樹上沒有皮皮鼠。爍爍他每次會跳到乙個節點u,把周...