题目描述

珂朵莉给你一个有根树,求有多少个子树满足其内部节点编号在值域上连续

一些数在值域上连续的意思即其在值域上构成一个连续的区间

输入描述:

第一行有一个整数n,表示树的节点数。接下来n–1行,每行两个整数x,y,表示存在一条从x到y的有向边。输入保证是一棵有根树。

输出描述:

输出一个数表示答案
示例1

输入

5
2 3
2 1
2 4
4 5

输出

5

说明

节点1子树中编号为1,值域连续节点3子树中编号为3,值域连续节点5子树中编号为5,值域连续节点4子树中编号为4,5,值域连续节点2子树中编号为1,2,3,4,5,值域连续

备注:

对于100%的数据,有n <=100000

题解

$dfs$。

只需要统计每个子树的节点数量、最小值以及最大值即可。

#include <bits/stdc++.h>
using namespace std;const int maxn = 200000 + 10;
int n;
int h[maxn], to[maxn], nx[maxn], cnt;
int mn[maxn], mx[maxn], sz[maxn], in[maxn];void add(int u, int v) {to[cnt] = v;nx[cnt] = h[u];h[u] = cnt ++;
}void dfs(int x) {sz[x] = 1;mn[x] = x;mx[x] = x;for(int i = h[x]; i != -1; i = nx[i]) {dfs(to[i]);sz[x] += sz[to[i]];mn[x] = min(mn[x], mn[to[i]]);mx[x] = max(mx[x], mx[to[i]]);}
}int main() {scanf("%d", &n);for(int i = 1; i <= n; i ++) {h[i] = -1;in[i] = 0;}cnt = 0;for(int i = 1; i < n; i ++) {int u, v;scanf("%d%d", &u, &v);add(u, v);in[v] ++;}for(int i = 1; i <= n; i ++) {if(in[i] == 0) {dfs(i);}}int ans = 0;for(int i = 1; i <= n; i ++) {if(mx[i] - mn[i] + 1 == sz[i]) ans ++;}printf("%d\n", ans);return 0;
}

  

转载于:https://www.cnblogs.com/zufezzt/p/8151296.html

牛客练习赛9 B - 珂朵莉的值域连续段相关推荐

  1. 搜索+思维 珂朵莉的值域连续段

    珂朵莉的值域连续段 链接:https://www.nowcoder.com/acm/contest/40/B 来源:牛客网 题目描述 珂朵莉给你一个有根树,求有多少个子树满足其内部节点编号在值域上连续 ...

  2. 牛客练习赛7 E 珂朵莉的数列

    珂朵莉的数列 思路: 树状数组+高精度 离散化不知道哪里写错了,一直wa,最后用二分写的离散化 哪位路过大神可以帮我看看原来的那个离散化错在哪里啊 通过代码: import java.math.Big ...

  3. 珂朵莉的值域连续段——DFS

    题目描述: 珂朵莉给你一个有根树,求有多少个子树满足其内部节点编号在值域上连续 一些数在值域上连续的意思即其在值域上构成一个连续的区间 输入描述: 第一行有一个整数n,表示树的节点数. 接下来n–1行 ...

  4. 牛客练习赛9。 B 柯朵莉的值域连续端

    时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言262144K 64bit IO Format: %lld 题目描述 珂朵莉给你一个有根树,求有多少个子树满足其 ...

  5. 一种黑科技:珂朵莉树

    首先要明白的是:珂朵莉树(ODT)是一种用来骗分的暴力数据结构. 珂朵莉树的思想是利用集合set,把相同且连续的元素合并为一个个区间,从而进行区间修改:因此,珂朵莉树是区间的集合,这点可以通过定义结构 ...

  6. CF896C Willem, Chtholly and Seniorious【珂朵莉树】

    >Link luogu CF896C >Description >解题思路 珂朵莉树,一种奇妙的数据结构使得暴力跑的飞快 这种数据结构的重要就是"推平",题目中的 ...

  7. 珂朵莉的约数(牛客练习赛9)

    链接:https://www.nowcoder.com/acm/contest/40/F 来源:牛客网 珂朵莉给你一个长为n的序列,有m次查询 每次查询给两个数l,r 设s为区间[l,r]内所有数的乘 ...

  8. 牛客每日练习----珂朵莉与宇宙,Forever97与寄信,Number

    大提琴的声音就像一条河,左岸是我无法忘却的回忆,右岸是我值得紧握的璀璨年华,中间流淌的,是我年年岁岁淡淡的感伤 链接:https://ac.nowcoder.com/acm/problem/14600 ...

  9. 牛客练习赛6 珂学送分2

    链接:https://ac.nowcoder.com/acm/contest/26/E 来源:牛客网 题目描述 珂...珂...珂朵莉给你出了一道送分题: 给你一个长为n的序列{vi},和一个数a,你 ...

最新文章

  1. 关于Javascript的内存泄漏问题的整理稿
  2. win32汇编实现拼接SQL语句
  3. OpenGL multiple lights多光源的实例
  4. LeetCode695. 岛屿的最大面积(C#)
  5. 学习C/C++的简单方法
  6. 2019.7.28关于数组和循环的八道题
  7. java 解码 encodeuri_encodeURIComponent编码后java后台的解码
  8. Deeplabv3+ 环境配置-Anaconda3 + Pytorch1.8 + Cuda10.1 + opencv3.2.0
  9. 移动边缘计算环境下边缘服务器放置方法研究
  10. 串口-TCP调试助手
  11. 特征值和特征向量的作用
  12. xss靶场练习之xss.haozi.me解析及答案
  13. java从输入中获取经纬度_java从百度后台接口获取经纬度
  14. 2022 开源轮子学习笔记
  15. DeDeCMS采集问题与技巧集锦
  16. Dobot相关资料汇总(随时更新)
  17. Java怎样存钱利息最大_C_怎样存钱利最大
  18. 史上最全网络端口号大全,肝货
  19. 2016年开发的供水管线设计工具进行升级
  20. 肺功能曲线图怎么看_肺功能检查正常结果报告怎么看?

热门文章

  1. Java调用jar包测试
  2. miniui datagrid 隐藏列默认赋值_「小程序JAVA实战」 小程序默认加载的页面和生命周期(八)...
  3. Android多媒体开发:照相机
  4. Java数据结构和算法:位运算
  5. 碎片Fragment
  6. 虚拟机linux系统王及密码的破解方式——重设root密码
  7. 虚拟机批量安装LINUX,基于vmware workstation的 pxe + kickstart批量安装linux
  8. c语言如何快速看懂别人的程序,探究如何快速看懂单片机程序方法
  9. 数据库系统概论:第五章 数据库完整性
  10. 数据结构和算法分析: 第五章 散列