#TCA6. 骑士团

    ID: 5686 传统题 1000ms 256MiB 尝试: 2 已通过: 1 难度: 3 上传者: 标签>动态规划树形DP背包教师测试算法组依赖背包普及/提高−

骑士团

题目背景

🏰 在古老的王国中,骑士团准备展开一次重要的远征。 军械库中一共有 N 件装备,但运输队只能携带一个容量有限的行囊,最大承载能力为 V

这些装备并非彼此独立——由于传承、组合或使用限制,装备之间形成了严格的层级依赖关系:

若要携带某件装备,就必须同时携带它的所有上级祖先装备。

所有装备的依赖关系恰好构成一棵有根树

问题描述

每件装备有唯一编号 i(编号从 1 到 N),并包含以下属性:

  • 体积 v_i:携带该装备需要占用的行囊空间
  • 价值 w_i:携带该装备能获得的价值
  • 上级装备 p_i:该装备所依赖的父装备编号

依赖规则

  1. p_i = -1,代表该装备是树根(传承链起点,无上级依赖);
  2. 数据保证所有装备的依赖关系构成一棵合法的有根树
  3. 选择任意一件装备时,必须同时选择它的父节点、祖父节点,直至根节点(整条祖先链)。

在行囊总容量不超过 V 的前提下,选择若干装备,使得总价值最大。 请输出这个最大总价值。

输入格式

第一行:两个整数 NV,分别表示装备数量和行囊最大容量 接下来 N 行:第 i 行包含三个整数 v_i, w_i, p_i,依次表示第 i 件装备的体积、价值、父装备编号

输出格式

输出一个整数,表示规则允许下的最大总价值

数据范围

  • 1N, V1001 \le N,\ V \le 100
  • 1vi, wi1001 \le v_i,\ w_i \le 100
  • 根装备:pi=1p_i = -1
  • 非根装备:1piN1 \le p_i \le N
  • 输入保证依赖关系构成一棵合法有根树

样例输入

5 7
2 3 -1
2 2 1
3 5 1
4 7 2
3 6 2

样例输出

11

样例解释

样例中装备的树形结构:

  • 根节点:1号装备(v=2, w=3)
  • 1的子节点:2号(v=2,w=2)、3号(v=3,w=5)
  • 2的子节点:4号(v=4,w=7)、5号(v=3,w=6)

在容量 7 的限制下,最优选择为1+3,总体积 2+3=5 ≤7,总价值 3+5=8;或1+2+5,总体积 2+2+3=7,总价值 3+2+6=11,即为最大价值。