时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld

题目描述

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

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

输入描述:

第一行有一个整数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

给的树是一个有根数,即根节点的indegree[root] == 0; 另外这个题的数据比较规整,是从1到n,并没有相同的数。。。

所以就耍了个小聪明,用dfs,过程中更新结点的区间,然后区间数等于子结点树。。。
还有就是,抽到了卫衣贼他妈开心hhhhhhh
#include <iostream>
#include <stdio.h>
#include <vector>
#include <string.h>
#include <cmath>
#include <queue>
#include <algorithm>
#include <unordered_map>
#include <sstream>
#include <string>
#include <utility>
using namespace std;
const int INF = 0x3f3f3f3f;
const int maxn = 100050;
struct Node {int v, next;
}node[maxn * 3];
int head[maxn], total;
int res;
int indegree[maxn];
void init() {memset(indegree, 0, sizeof(indegree));res = 0;total = 0;memset(head, -1, sizeof(head));
}void add(int u, int v) {node[total] = {v, head[u]};head[u] = total++;
}int son[maxn];
pair<int, int> dfs(int fa, int u) {pair<int, int> a{u, u};son[u] = 1;for (int i = head[u]; i != -1; i = node[i].next) {int v = node[i].v;if (v != fa) {auto t = dfs(u, v);a.first = min(a.first, t.first);a.second = max(a.second, t.second);son[u] += son[v];}}//cout << fa << "    "  << u << "    "  << son[u] << endl;if (a.second - a.first + 1 == son[u])res++;return a;
}int main() {//freopen("in.txt", "r", stdin);init();int n;cin >> n;for (int i = 1; i < n; ++i) {int u, v;cin >> u >> v;indegree[v]++;add(u, v);}int root;for(int i = 1; i <= n; ++i) {if (!indegree[i]) {root = i;break;}}dfs(-1, root);cout << res << endl;
}

牛客练习赛9。 B 柯朵莉的值域连续端相关推荐

  1. 牛客练习赛9 B - 珂朵莉的值域连续段

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

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

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

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

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

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

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

  5. 牛客练习赛81 E. 小 Q 与函数求和 1( “简单莫比乌斯反演” ,欧拉函数性质)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 牛客练习赛81 E. 小 Q 与函数求和 1( "简单莫比乌斯反演" ) Prob ...

  6. 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  7. 牛客练习赛34 E little w and Digital Root(数位dp)

    title: 牛客练习赛34 E little w and Digital Root(数位dp) date: 2018-12-17 22:38:37 tags: 数位dp categories:ACM ...

  8. 牛客练习赛34 - C little w and Segment Coverage(思维、树状数组)

    title: 牛客练习赛34 - C little w and Segment Coverage(思维.树状数组) date: 2018-12-15 16:36:55 tags: [树状数组,思维] ...

  9. 牛客练习赛52 | C | [烹饪] (DP,裴蜀定理,gcd)

    牛客练习赛52 C 烹饪 链接:https://ac.nowcoder.com/acm/contest/1084/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 327 ...

最新文章

  1. ROS Publisher node
  2. 点击空白处遮罩层关闭_如何手动关闭win10系统自带的windows defender
  3. 易语言逐条读access数据_易语言操作数据教程之ACCESS实战视频教程
  4. vue代码生成器可视化界面_手把手教你基于SqlSugar4编写一个可视化代码生成器(生成实体,以SqlServer为例,文末附源码)...
  5. idea lombok插件安装_mac安装的软件和idea的插件推荐
  6. 【阿里妈妈营销科学系列】第六篇:营销组合模型MMM
  7. 【算法竞赛学习】数字中国创新大赛智慧海洋建设-Task2数据分析
  8. mysql中文乱码 go_Mysql binlog乱码问题研究-Go语言中文社区
  9. 配色方案专辑上线,宠溺设计师的好素材!
  10. python3实例车代码_Python编程pygame模块实现移动的小车示例代码
  11. Axure元件库,Axure元件库下载,Axure Design
  12. esp32的MQTT物联网开发记录
  13. android游戏妄撮java源码
  14. 一杯茶的时间,上手 Django 框架开发
  15. P4086 [USACO17DEC]My Cow Ate My Homework S(静态数据预处理:后缀和、后缀最小值)
  16. win10网络连接出现感叹号
  17. 实战演练-java+微信小程序实现省市区三级联动
  18. 对finalize的理解
  19. 微调电位器命名规则_电位器物料规格描述规范
  20. Windows AutoPilot简介转载学习

热门文章

  1. 编译原理------语法分析器C/C++代码实现
  2. 年少不懂王小波,读懂已是猪圈人!做一只特立独行的猪
  3. Generic Webhook Trigger 远程触发
  4. 目标检测的Tricks | 【Trick1】Label Smoothing
  5. Timer+TimerTask实现数字时钟
  6. Java知识回顾 (6)正则表达式、方法、文件与异常
  7. 今年,25家最有价值的美国初创公司消失了
  8. Unity——自动化代码生成
  9. java几种常用设计模式简单示例
  10. 小红书营销推广有何策略?