为了更好的阅读体检,可以查看我的算法学习博客树上计数

题目内容

给一棵 N N N 个点的有根树,所有点从 1 1 1 到 N N N 标号,且以 1 1 1 号点为根。问树上有多少个点满足其子树内(包含该点本身)的节点数大于等于 L L L 且小于等于 R R R 。

输入描述

输入的第一行包含三个正整数 N N N , L L L , R R R ,保证 N ≤ 1 0 5 , L ≤ R ≤ N N\le 10^5 , L \le R \le N N≤105,L≤R≤N 。

接下来的 N 一 1 N一1 N一1 行,第 i i i 行包含一个正整数 f i + 1 f_{i+1} fi+1​ 表示点 i + 1 i + 1 i+1 的父亲节点编号。

输入保证合法。

输出描述

输出一个正整数,表示对应的答案。

# 样例

输入

7 2 4
3
1
1
3
4
6

输出

3

题目思路

1. d f s dfs dfs预处理出 d p i dp_i dpi​ 代表以点 i i i为根的子树的点的个数.容易发现转移方程
d p i = ∑ j 是 i 的儿子 d p j + 1 \large dp_i = \sum_{j是i的儿子} dp_j + 1 dpi​=j是i的儿子∑​dpj​+1
2.挨个判断每个节点 d p i ∈ [ l , r ] dp_i \in[l,r] dpi​∈[l,r]

代码+解析

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 6;
// e为邻接矩阵
vector<int> e[maxn];
int n , l , r;
// dp 定义如上
int dp[maxn];
void dfs (int u){// 初始化dp[u] 含有u本身一个点dp[u] = 1;for (auto v : e[u]){// 1.递归的求解儿子的dp值dfs(v);// 2.转移到自己dp[u] += dp[v];}
}
int main (){// 关闭同步流,加速读入的速度ios::sync_with_stdio(false);cin >> n >> l >> r;// 读入邻接矩阵for (int i = 2 ; i <= n ; i++){int x;cin >> x;e[x].push_back(i);}// 从1号点开始dfs求解dfs(1);int cnt = 0;// 判断for (int i = 1 ; i <= n ; i++){if (l <= dp[i]  && dp[i] <= r) cnt++;}cout << cnt << endl;return 0;
}

【备战秋招】每日一题:2022年清华大学(深圳)保研夏令营机试题-第一题-树上计数相关推荐

  1. 【笔试】备战秋招,每日一题|20230415携程研发岗笔试

    前言 最近碰到一个专门制作大厂真题模拟题的网站 codefun2000,最近一直在上面刷题.今天来进行2023.04.15携程研发岗笔试,整理了一下自己的思路和代码. 比赛地址 A. 找到you 题意 ...

  2. 2018年天津大学夏令营机试第一题

    题目 有如下的数列0,1,1,2,3,5,8-- 第一行给你一个T,表示接下来要输入T行数字(0<T<10000) 剩下T行每行输入数字N(0<=N<=100000)(记忆不太 ...

  3. 2018南京大学夏令营机试第一题

    (题目来自tonygsw) 题目大意: 就是输入一个N*N的矩阵,找出在矩阵中,所有元素加起来之和最大的子矩阵. 例如在 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 2 这 ...

  4. 备战秋招 |《百面机器学习》算法+leetcode开班报名!

    算法面试刷题班推荐: 以<百面机器学习>为教材 结合leetcode筛选刷题 秋招已经开始了!时间紧迫,也许别人已经得到offer了,你却还在不知所措?(文末重金招聘讲师) 六月份基本都是 ...

  5. Github | 备战秋招,最全面试题集合!

    最近很多大厂已经开始开始了校招提前批,2020届的同学们可以赶紧启动啦-社招的情况也不容乐观,除了之前的一大波裁员新闻,现在更多的是收紧HC,做人才盘点,各个厂的HC不会像以前那么多了.我在Githu ...

  6. 如何备战秋招,找到满意的工作(转B站狂神)

    1.何为秋招? 1.1.应届生 暑假:大学生(实习.工作) 8月.春招! 应届毕业生! 2015年级 2019界 2016年级 2020界 应届毕业生: 大三升大四! 大三暑假找工作找实习! 大四:毕 ...

  7. [静态时序分析简明教程(三)]备战秋招,如何看懂一个陌生的timing report

    备战秋招,如何看懂一个陌生的timing report 一.写在前面 1.1 快速导航链接· 二.Timing Report 2.1 起始点与终止点 2.2 路径时钟域的归属 2.2 建立时间检查与保 ...

  8. 研二非科班研究生如何备战秋招

    持续坚持原创输出,点击蓝字关注我吧 作者:软件质量保障 知乎:https://www.zhihu.com/people/iloverain1024 ​最近知乎收到了一位研二非科班同学的付费咨询,让我帮 ...

  9. 【华为机试真题 Python实现】2022年4、5月高频机试题

    文章目录 2022年4.5月高频机试题 机试必须要会的函数 输入输出处理 for 循环 通过下标访问元素 直接迭代访问元素 同时访问下标和元素 while 循环 字符ASSIC码转换 进制转换 绝对值 ...

最新文章

  1. 好想学python怎么猜人_学手艺我好想学个手艺哦可是脑子怎么想也想 – 手机爱问...
  2. 学习Mybatis与mysql数据库的示例笔记
  3. php try 并回滚,ThinkPHP异常处理、事务处理(事务回滚)
  4. 时间一天一天过去,很快;时间如果过的慢,更是没有意思
  5. jdbctemplate oracle xml文件,Spring JDBCTemplate使用JNDI数据源
  6. Golang——接口、多态、接口继承与转换、空接口、类型断言
  7. 走进COM组件系列(一)
  8. 屏蔽×××S 2008报表导出格式
  9. SpringCloud之高可用的分布式配置中心(Spring Cloud Config)(七)
  10. CVR预估模型-ESMM
  11. [UWP]理解ControlTemplate中的VisualTransition
  12. ScrollView中嵌套ListView的完美解决方案
  13. Spring解析@ComponentScan注解的执行流程
  14. 腾讯地图和百度地图经纬度的相互转换
  15. 计算机的五个发展阶段详细介绍,计算机的发展阶段可以分为那五个阶段吗?
  16. C4D R26 安装教程
  17. 样本峰度(kurtosis)与随机变量的峰度及四阶统计量之间的关系和计算估计
  18. Android11.0(R) MTK6771 平板横屏方案修改(强制app横屏 + 开机logo/动画+关机充电横屏 + RecoveryUI 横屏)
  19. Elite Graphix Elite Cms SQL注入漏洞(CVE-2022-24263)
  20. Keep悦动圈竞品分析报告(2)

热门文章

  1. 【金三银四系列】之设计模式专题-下(2023版)
  2. bat命令删除指定文件夹下的文件以及空文件夹
  3. 生日必去揩油的19个地方
  4. Mysql 数据库自动备份
  5. 用声音在一起,听荔枝CTO丁宁聊UGC声音互动平台的技术世界
  6. 2022年网络安全比赛--压缩包文件暴力破解中职组(超详细)
  7. 【数据结构与算法】之(数据结构绪论篇)(一)溢彩色
  8. Redis 主从复制的原理及演化
  9. 【SpringBoot新手篇】SpringBoot 集成H2数据库
  10. 在binary环境下的函数类型推断(一)