首先,这道题正解的思路是从subtask2而得来的,所以先讲一下subtask2的做法. 因为保证答案不超过long long,所以直接求最大权独立集即可:dp[u][0]表示u点一定不能取的答案,dp[u][1]表示u点对儿子没有限制的答案. \(dp[u][0]=max(dp[v][0],dp[v][1])\) \(dp[u][1]=max(dp[u][1],val[u]*\prod dp[v][0])\) 直接跑DP即可. 而正解是怎么做的呢? 想到乘法,可以将其转化为对数,每次乘法就相当…