luogu#P12038. [USTCPC 2025] 送温暖

    ID: 36288 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>二分2025背包 DP双指针 two-pointer折半搜索 meet in the middle高校校赛

[USTCPC 2025] 送温暖

题目描述

克露丝卡尔酱听说大家都是经验丰富的信息竞赛老手,轻松暴力踩标算。为了让大家都体验一下暴力踩标算的乐趣,所以克露丝卡尔酱准备了一道简单的送温暖题:

给定一个 nn 个点的树,点 ii 的点权为 aia_i,你需要从中选出一个连通块,使得它们的点权和模 MM 的余数最大。克露丝卡尔酱想知道这个点权和模 MM 的余数最大是多少。

输入格式

第一行两个正整数 nn (1n33)(1\leqslant n \leqslant 33)MM (2M109)(2\leqslant M \leqslant 10^9)

为了方便输入,我们输入时假定以 11 为根,但是请注意这是一棵无根树。

第二行有 n1n - 1 个整数,第 ii 个整数表示第 i+1i + 1 个点的父节点 fi+1f_{i + 1} (1fi+1<i+1)(1\leqslant f_{i+1} < i+1)

第三行有 nn 个整数,a1,,ana_1, \cdots, a_n (0ai<M)(0 \leqslant a_i < M) 表示每个点的点权。

输出格式

共一个整数表示答案。

6 10
1 2 3 4 5
7 7 7 7 7 7
8

提示

这棵树是一条链 1 - 2 - 3 - 4 - 5 - 6。最优解为选择一条长度为 4 的链(例如 1 - 2 - 3 - 4 或者 2 - 3 - 4 - 5 等等),此时答案为 4×78(mod10)4 \times 7 \equiv 8\pmod {10}