AtCoder Beginner Contest 222 F 問題 Expensive Expense
問題
提出解答
問題の概要
頂点からなる重み付き木がある. それぞれの辺は を結び, 重みは である. そして, 各頂点には整数 が指定されている. を 最短路の重みと の和とする. このとき, に対して, 以下の値を求めよ.
制約
解法
全方位木DPで解くことにする. 木 とし, ある頂点を根とする木DP において, 更新式が以下のような式で表せるとき, 筆者が抽象化したものを使うことができる. ただし, で頂点 の子の全体の集合とする.
ただし, を可換モノイド, を集合とし, とする. ただし, については, で, が 親のときのみ定まっていれば十分である.
この問題においては以下のように定めるとうまくいく. ただし, のとき, 辺 の重みを とする. このとき, である.
- (非負整数全体の集合)
- に対して,
- の単位元は である.
(考え方) で, 問題を を根とする部分木に制限した場合の答えとする. とする. とは一致しない の子孫 において, 以下のように考える.
- のとき: である.
- のとき: は頂点 を根とする部分木内の頂点とする. このとき, である.
よって,
より, モノイド, を上のように設定するとうまくいくことがわかる.
抽象化の考え方は以下のサイトが有用である.
この抽象化した全方位木DP によって, 求めるべき 個の値を定数倍重めの で求めることができる.