牛客练习赛9 B - 珂朵莉的值域连续段
题目描述
珂朵莉给你一个有根树,求有多少个子树满足其内部节点编号在值域上连续
一些数在值域上连续的意思即其在值域上构成一个连续的区间
输入描述:
第一行有一个整数n,表示树的节点数。接下来n–1行,每行两个整数x,y,表示存在一条从x到y的有向边。输入保证是一棵有根树。
输出描述:
输出一个数表示答案
输入
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 - 珂朵莉的值域连续段相关推荐
- 搜索+思维 珂朵莉的值域连续段
珂朵莉的值域连续段 链接:https://www.nowcoder.com/acm/contest/40/B 来源:牛客网 题目描述 珂朵莉给你一个有根树,求有多少个子树满足其内部节点编号在值域上连续 ...
- 牛客练习赛7 E 珂朵莉的数列
珂朵莉的数列 思路: 树状数组+高精度 离散化不知道哪里写错了,一直wa,最后用二分写的离散化 哪位路过大神可以帮我看看原来的那个离散化错在哪里啊 通过代码: import java.math.Big ...
- 珂朵莉的值域连续段——DFS
题目描述: 珂朵莉给你一个有根树,求有多少个子树满足其内部节点编号在值域上连续 一些数在值域上连续的意思即其在值域上构成一个连续的区间 输入描述: 第一行有一个整数n,表示树的节点数. 接下来n–1行 ...
- 牛客练习赛9。 B 柯朵莉的值域连续端
时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言262144K 64bit IO Format: %lld 题目描述 珂朵莉给你一个有根树,求有多少个子树满足其 ...
- 一种黑科技:珂朵莉树
首先要明白的是:珂朵莉树(ODT)是一种用来骗分的暴力数据结构. 珂朵莉树的思想是利用集合set,把相同且连续的元素合并为一个个区间,从而进行区间修改:因此,珂朵莉树是区间的集合,这点可以通过定义结构 ...
- CF896C Willem, Chtholly and Seniorious【珂朵莉树】
>Link luogu CF896C >Description >解题思路 珂朵莉树,一种奇妙的数据结构使得暴力跑的飞快 这种数据结构的重要就是"推平",题目中的 ...
- 珂朵莉的约数(牛客练习赛9)
链接:https://www.nowcoder.com/acm/contest/40/F 来源:牛客网 珂朵莉给你一个长为n的序列,有m次查询 每次查询给两个数l,r 设s为区间[l,r]内所有数的乘 ...
- 牛客每日练习----珂朵莉与宇宙,Forever97与寄信,Number
大提琴的声音就像一条河,左岸是我无法忘却的回忆,右岸是我值得紧握的璀璨年华,中间流淌的,是我年年岁岁淡淡的感伤 链接:https://ac.nowcoder.com/acm/problem/14600 ...
- 牛客练习赛6 珂学送分2
链接:https://ac.nowcoder.com/acm/contest/26/E 来源:牛客网 题目描述 珂...珂...珂朵莉给你出了一道送分题: 给你一个长为n的序列{vi},和一个数a,你 ...
最新文章
- 关于Javascript的内存泄漏问题的整理稿
- win32汇编实现拼接SQL语句
- OpenGL multiple lights多光源的实例
- LeetCode695. 岛屿的最大面积(C#)
- 学习C/C++的简单方法
- 2019.7.28关于数组和循环的八道题
- java 解码 encodeuri_encodeURIComponent编码后java后台的解码
- Deeplabv3+ 环境配置-Anaconda3 + Pytorch1.8 + Cuda10.1 + opencv3.2.0
- 移动边缘计算环境下边缘服务器放置方法研究
- 串口-TCP调试助手
- 特征值和特征向量的作用
- xss靶场练习之xss.haozi.me解析及答案
- java从输入中获取经纬度_java从百度后台接口获取经纬度
- 2022 开源轮子学习笔记
- DeDeCMS采集问题与技巧集锦
- Dobot相关资料汇总(随时更新)
- Java怎样存钱利息最大_C_怎样存钱利最大
- 史上最全网络端口号大全,肝货
- 2016年开发的供水管线设计工具进行升级
- 肺功能曲线图怎么看_肺功能检查正常结果报告怎么看?
热门文章
- Java调用jar包测试
- miniui datagrid 隐藏列默认赋值_「小程序JAVA实战」 小程序默认加载的页面和生命周期(八)...
- Android多媒体开发:照相机
- Java数据结构和算法:位运算
- 碎片Fragment
- 虚拟机linux系统王及密码的破解方式——重设root密码
- 虚拟机批量安装LINUX,基于vmware workstation的 pxe + kickstart批量安装linux
- c语言如何快速看懂别人的程序,探究如何快速看懂单片机程序方法
- 数据库系统概论:第五章 数据库完整性
- 数据结构和算法分析: 第五章 散列