題目背景
深繪里一直很討厭雨天。
灼熱的天氣穿透了前半個夏天,後來一場大雨和隨之而來的洪水,澆滅了一切。
雖然深繪里家鄉的小村落對洪水有著頑固的抵抗力,但也倒了幾座老房子,幾棵老樹被連根拔起,以及田地裡的糧食被弄得一片狼藉。
無奈的深繪里和村民們只好等待救濟糧來維生。
不過救濟糧的發放方式很特別。
題目描述
首先村落裡的一共有 nnn 座房屋,並形成乙個樹狀結構。然後救濟糧分 mmm 次發放,每次選擇兩個房屋 (x, y)(x,~y)(x, y),然後對於 *** 到 yyy 的路徑上(含 *** 和 yyy)每座房子裡發放一袋 zzz 型別的救濟糧。
然後深繪里想知道,當所有的救濟糧發放完畢後,每座房子裡存放的最多的是哪種救濟糧。
輸入格式
輸入的第一行是兩個用空格隔開的正整數,分別代表房屋的個數 nnn 和救濟糧發放的次數 mmm。
第 222 到 第 nnn 行,每行有兩個用空格隔開的整數 a, ba,~ba, b,代表存在一條連線房屋 aaa 和 bbb 的邊。
第 (n+1)(n + 1)(n+1) 到第 (n+m)(n + m)(n+m) 行,每行有三個用空格隔開的整數 x, y, zx,~y,~zx, y, z,代表一次救濟糧的發放是從 *** 到 yyy 路徑上的每棟房子發放了一袋 zzz 型別的救濟糧。
輸出格式
輸出 nnn 行,每行乙個整數,第 iii 行的整數代表 iii 號房屋存放最多的救濟糧的種類,如果有多種救濟糧都是存放最多的,輸出種類編號最小的一種。
如果某座房屋沒有救濟糧,則輸出 000。
輸入 #1
5 3
1 23 1
3 45 3
2 3 3
1 5 2
3 3 3
輸出 #1
233
02
最後dfs的時候,只需要將2個點的線段樹進行合併。 這樣裡面的每類的最大就合併到乙個點裡面去了。
;//cnt是動態開點的個數 rt代表每個節點的線段樹根節點編號
void
add(
int u,
int v)
void
bfs()}
}int
lca(
int x,
int y)
if(x == y)
return x;
for(
int k = lg; k >=
0; k--
)return f[x][0
];}void
pushup
(int id)
void
update
(int
&id,
int l,
int r,
int x,
int c)
int mid =
(l + r)
>>1;
if(x <= mid)
update
(tr[id]
.lc, l, mid, x, c)
;else
update
(tr[id]
.rc, mid +
1, r, x, c)
;pushup
(id);}
intmerge
(int p,
int q,
int l,
int r)
int mid =
(l + r)
>>1;
tr[p]
.lc =
merge
(tr[p]
.lc, tr[q]
.lc, l, mid)
; tr[p]
.rc =
merge
(tr[p]
.rc, tr[q]
.rc, mid +
1, r)
;pushup
(p);
return p;
}void
dfs(
int u,
int fa)
ans[u]
= tr[rt[u]
].mx ==0?
0: tr[rt[u]
].id;
}int
main()
bfs();
for(
int i =
1; i <= m; i++
)//對z進行離散化
sort
(idz +
1, idz +
1+ m)
; cntz =
unique
(idz +
1, idz +
1+ m)
- idz -1;
for(
int i =
1; i <= m; i++
)dfs(1
,0);
for(
int i =
1; i <= n; i++
)printf
("%d\n"
, idz[ans[i]])
;return0;
}
P4556 雨天的尾巴
題目背景 深繪里一直很討厭雨天。灼熱的天氣穿透了前半個夏天,後來一場大雨和隨之而來的洪水,澆滅了一切。雖然深繪里家鄉的小村落對洪水有著頑固的抵抗力,但也倒了幾座老房子,幾棵老樹被連根拔起,以及田地裡的糧食被弄得一片狼藉。無奈的深繪里和村民們只好等待救濟糧來維生。不過救濟糧的發放方式很特別。題目描述 ...
洛谷P4556 雨天的尾巴
p4556 vani有約會 雨天的尾巴 模板 線段樹合併 題目大意 有一顆 n 個節點的樹,m 次操作,每次將節點 u 到 v 的路徑上的每個點放乙個物品 c 最後詢問每個節點上數量最多的物品是什麼,其中數量相同的物品取編號最小者,若無物品輸出0。n,m,c leq 10 5 思路 如題目名稱,模板...
P4556 線段樹合併,差分
線段樹合併 差分 對於每次修改操作 u,v u,v u,v 我們給u,v u,vu,v節點打上 1 1 1的標記,給lca u,v lca u,v lca u,v f l ca u v f lca u,v f lca u,v 打上 1的標記 最後計算答案的時候,dfs dfsdf s一遍,將子樹內的...