atcoder#TOKIOMARINE2020D. Knapsack Queries on a tree
Knapsack Queries on a tree
题目描述
頂点からなる根付き二分木があり、各頂点には から までの番号がついています。 頂点 が根であり、頂点 () の親は頂点 です。
各頂点には つのアイテムがあります。頂点 にあるアイテムの価値は であり、重さは です。 そこで、次のクエリに 回答えてください。
- 二分木の頂点 及び正の整数 が与えられる。 及び の先祖にあるアイテムを、重さの合計が 以下となるようにいくつか( 個でもよい)選ぶ。 このとき、選んだアイテムの価値の総和の最大値を求めよ。
ただし、頂点 が頂点 の先祖であるとは、頂点 が頂点 の間接的な親である、つまり、 、、さらに各 について が の親となるような頂点の列 () が存在することを指します。
输入格式
回目のクエリで指定される , をそれぞれ , とする。 このとき、入力は以下の形式で標準入力から与えられる。
输出格式
から までの各整数 について、 回目のクエリに対する答えを 行目に出力せよ。
题目大意
给定一个 个节点的二叉树,编号 1 到 ,根为 ,对于任意一个非根节点 , 的父亲为 ,每一个节点 都有一个价值 和权重 .
接下来有 次询问,每次询问给出两个正整数 ,,请你在 和 的祖先中选出若干个(可以为 0 个)节点,使得选出的节点的权重不超过 ,求最大能选出的价值。
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
提示
制約
- 各クエリで指定される , は , を満たす。
- 入力で与えられる値はすべて整数である。
Sample Explanation 1
最初のクエリでは、選ぶことのできるアイテムは なるアイテムのみであるので、 より つもアイテムを選ぶことができません。 したがって、答えは になります。 一方で 番目のクエリでは、選ぶことのできるアイテムは なるアイテムと なるアイテムの つであり、 より両方を選ぶことができます。 したがって、答えは になります。