【备战秋招】每日一题:2022年清华大学(深圳)保研夏令营机试题-第一题-树上计数
为了更好的阅读体检,可以查看我的算法学习博客树上计数
题目内容
给一棵 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年清华大学(深圳)保研夏令营机试题-第一题-树上计数相关推荐
- 【笔试】备战秋招,每日一题|20230415携程研发岗笔试
前言 最近碰到一个专门制作大厂真题模拟题的网站 codefun2000,最近一直在上面刷题.今天来进行2023.04.15携程研发岗笔试,整理了一下自己的思路和代码. 比赛地址 A. 找到you 题意 ...
- 2018年天津大学夏令营机试第一题
题目 有如下的数列0,1,1,2,3,5,8-- 第一行给你一个T,表示接下来要输入T行数字(0<T<10000) 剩下T行每行输入数字N(0<=N<=100000)(记忆不太 ...
- 2018南京大学夏令营机试第一题
(题目来自tonygsw) 题目大意: 就是输入一个N*N的矩阵,找出在矩阵中,所有元素加起来之和最大的子矩阵. 例如在 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 2 这 ...
- 备战秋招 |《百面机器学习》算法+leetcode开班报名!
算法面试刷题班推荐: 以<百面机器学习>为教材 结合leetcode筛选刷题 秋招已经开始了!时间紧迫,也许别人已经得到offer了,你却还在不知所措?(文末重金招聘讲师) 六月份基本都是 ...
- Github | 备战秋招,最全面试题集合!
最近很多大厂已经开始开始了校招提前批,2020届的同学们可以赶紧启动啦-社招的情况也不容乐观,除了之前的一大波裁员新闻,现在更多的是收紧HC,做人才盘点,各个厂的HC不会像以前那么多了.我在Githu ...
- 如何备战秋招,找到满意的工作(转B站狂神)
1.何为秋招? 1.1.应届生 暑假:大学生(实习.工作) 8月.春招! 应届毕业生! 2015年级 2019界 2016年级 2020界 应届毕业生: 大三升大四! 大三暑假找工作找实习! 大四:毕 ...
- [静态时序分析简明教程(三)]备战秋招,如何看懂一个陌生的timing report
备战秋招,如何看懂一个陌生的timing report 一.写在前面 1.1 快速导航链接· 二.Timing Report 2.1 起始点与终止点 2.2 路径时钟域的归属 2.2 建立时间检查与保 ...
- 研二非科班研究生如何备战秋招
持续坚持原创输出,点击蓝字关注我吧 作者:软件质量保障 知乎:https://www.zhihu.com/people/iloverain1024 最近知乎收到了一位研二非科班同学的付费咨询,让我帮 ...
- 【华为机试真题 Python实现】2022年4、5月高频机试题
文章目录 2022年4.5月高频机试题 机试必须要会的函数 输入输出处理 for 循环 通过下标访问元素 直接迭代访问元素 同时访问下标和元素 while 循环 字符ASSIC码转换 进制转换 绝对值 ...
最新文章
- 好想学python怎么猜人_学手艺我好想学个手艺哦可是脑子怎么想也想 – 手机爱问...
- 学习Mybatis与mysql数据库的示例笔记
- php try 并回滚,ThinkPHP异常处理、事务处理(事务回滚)
- 时间一天一天过去,很快;时间如果过的慢,更是没有意思
- jdbctemplate oracle xml文件,Spring JDBCTemplate使用JNDI数据源
- Golang——接口、多态、接口继承与转换、空接口、类型断言
- 走进COM组件系列(一)
- 屏蔽×××S 2008报表导出格式
- SpringCloud之高可用的分布式配置中心(Spring Cloud Config)(七)
- CVR预估模型-ESMM
- [UWP]理解ControlTemplate中的VisualTransition
- ScrollView中嵌套ListView的完美解决方案
- Spring解析@ComponentScan注解的执行流程
- 腾讯地图和百度地图经纬度的相互转换
- 计算机的五个发展阶段详细介绍,计算机的发展阶段可以分为那五个阶段吗?
- C4D R26 安装教程
- 样本峰度(kurtosis)与随机变量的峰度及四阶统计量之间的关系和计算估计
- Android11.0(R) MTK6771 平板横屏方案修改(强制app横屏 + 开机logo/动画+关机充电横屏 + RecoveryUI 横屏)
- Elite Graphix Elite Cms SQL注入漏洞(CVE-2022-24263)
- Keep悦动圈竞品分析报告(2)