atcoder#TOKIOMARINE2020D. Knapsack Queries on a tree
Knapsack Queries on a tree
配点 : 点
問題文
頂点からなる根付き二分木があり、各頂点には から までの番号がついています。 頂点 が根であり、頂点 () の親は頂点 です。
各頂点には つのアイテムがあります。頂点 にあるアイテムの価値は であり、重さは です。 そこで、次のクエリに 回答えてください。
- 二分木の頂点 及び正の整数 が与えられる。 及び の先祖にあるアイテムを、重さの合計が 以下となるようにいくつか( 個でもよい)選ぶ。 このとき、選んだアイテムの価値の総和の最大値を求めよ。
ただし、頂点 が頂点 の先祖であるとは、頂点 が頂点 の間接的な親である、つまり、 、、さらに各 について が の親となるような頂点の列 () が存在することを指します。
制約
- 各クエリで指定される , は , を満たす。
- 入力で与えられる値はすべて整数である。
入力
回目のクエリで指定される , をそれぞれ , とする。 このとき、入力は以下の形式で標準入力から与えられる。
出力
から までの各整数 について、 回目のクエリに対する答えを 行目に出力せよ。
3
1 2
2 3
3 4
3
1 1
2 5
3 5
0
3
3
最初のクエリでは、選ぶことのできるアイテムは なるアイテムのみであるので、 より つもアイテムを選ぶことができません。 したがって、答えは になります。
一方で 番目のクエリでは、選ぶことのできるアイテムは なるアイテムと なるアイテムの つであり、 より両方を選ぶことができます。 したがって、答えは になります。
15
123 119
129 120
132 112
126 109
118 103
115 109
102 100
130 120
105 105
132 115
104 102
107 107
127 116
121 104
121 115
8
8 234
9 244
10 226
11 227
12 240
13 237
14 206
15 227
256
255
250
247
255
259
223
253