洛谷P3252 [JLOI2012]树【树上dfs+查找】【黄】

该博客介绍了洛谷P3252题目,涉及一棵树上的节点权值和为s的路径数量问题。通过深度优先搜索(DFS)策略,结合树的前缀和思想,解决数据规模为n≤10^5且权值不超过10^3的路径查找。博主分享了两种解题方法,包括暴力DFS和利用前缀和的优化方法,其中优化方法利用集合(set)进行判重,或者利用前缀和的单调性进行二分查找。
摘要由CSDN通过智能技术生成

Date:2022.02.21
题目描述
在这个问题中,给定一个值 s 和一棵树。在树的每个节点有一个权值,第 i 个点的权值为 ai,问有多少条路径的节点权值总和为 s。路径中节点的深度必须是升序的。假设节点 1 是根节点,根的深度是 0,它的儿子节点的深度为 1。路径不必一定从根节点开始。
输入格式
第一行有两个整数 n 和 s,其中 n 是树的节点数。
第二行有 n 个整数,第 i 个整数 ai 表示节点 i 的权值。
接下来的 (n−1) 行,每行有两个个整数 x 和 y,表示 y 是 x 的儿子。
输出格式
输出路径节点总和为 s 的路径数量。
输入输出样例
输入 #1复制
3 3
1 2 3
1 2
1 3
输出 #1复制
2
说明/提示
数据规模与约定
对于 100% 的数据,保证 1 ≤ n ≤ 1 0 5 , 1 ≤ a i , s ≤ 1 0 3 1≤n≤10^5,1≤ai ,s≤10^3 1n1051ai,s103

思路①:暴力dfs,每个点dfs一次。竟然没t,震惊(数据真水!
代码如下:

#include<bits/stdc++.h>
using namesp
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值