GDFZOJ 美丽树

题意:

给出一棵有n个点的树,边是有向边,定义一棵美丽子树为:一个点及其子树所有点的编号恰好为一段连续的数字则称之为美丽,现在求有多少棵美丽子树?

题解:

一段连续的数字必定有一个最大的数字和最小的数字,如果现在知道最大和最小的数是什么了,判断是否连续就可以通过找出数的个数了。。

所以需要找出:一棵子树的最大值,最小值,节点个数

代码:

#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

const int N = 1e5 + 7;
int n, c[N], r[N], root, ans, siz[N], mini[N], maxi[N];

vector <int> e[N];

void DFS (int u) {
	siz[u] = 1, mini[u] = u, maxi[u] = u;
	for (int it = 0; it < e[u].size(); ++it) {
		int v = e[u][it];
		DFS (v);
		mini[u] = min (mini[u], mini[v]);
		maxi[u] = max (maxi[u], maxi[v]);
		siz[u] += siz[v];
	}
}

int main () {
	scanf ("%d", &n);
	for (int i = 1; i < n; ++i) {
		int u, v;
		scanf ("%d%d", &u, &v);
		e[u].push_back(v);
		c[u]++, r[v]++;
	}
	for (int i = 1; i <= n; ++i)
		if (r[i] == 0) root = i;
	DFS (root);
	int ans = 0;
	for (int i = 1; i <= n; ++i)
		if (maxi[i] - mini[i] + 1 == siz[i]) ++ans;
	cout << ans << endl;
	return 0;
}

  

总结:

第一眼看这个题真的是被水淹没,不知所措,但是根据极端情况切入会简单很多QAQ

时间: 2024-10-31 22:12:27

GDFZOJ 美丽树的相关文章

美丽联合业务升级下的机器学习应用

通常机器学习在电商领域有三大应用,推荐.搜索.广告,这次我们聊聊三个领域里都会涉及到的商品排序问题.从业务角度,一般是在一个召回的商品集合里,通过对商品排序,追求GMV或者点击量最大化.进一步讲,就是基于一个目标,如何让流量的利用效率最高.很自然的,如果我们可以准确预估每个商品的GMV转化率或者点击率,就可以最大化利用流量,从而收益最大. 蘑菇街是一个年轻女性垂直电商平台,主要从事服饰鞋包类目,2015年时全年GMV超过了百亿,后与美丽说合并后公司更名为美丽联合集团.2014年时入职蘑菇街,那时

【洛谷】P2073 送花 [2017年6月计划 线段树01]

P2073 送花 题目背景 小明准备给小红送一束花,以表达他对小红的爱意.他在花店看中了一些花,准备用它们包成花束. 题目描述 这些花都很漂亮,每朵花有一个美丽值W,价格为C. 小明一开始有一个空的花束,他不断地向里面添加花.他有以下几种操作: 操作 含义 1 W C 添加一朵美丽值为W,价格为C的花. 3 小明觉得当前花束中最便宜的一朵花太廉价,不适合送给小红,所以删除最便宜的一朵花. 2 小明觉得当前花束中最贵的一朵花太贵,他心疼自己的钱,所以删除最贵的一朵花. -1 完成添加与删除,开始包

[转载]像树一样活着

人的生活方式有两种,  第一种方式是像草一样活着,  你尽管活着,每年还在成长,  但是你毕竟是一棵草,  你吸收雨露阳光,  但是长不大.  人们可以踩过你,  但是人们不会因为你的痛苦,而他产生痛苦:  人们不会因为你被踩了,而来怜悯你,  因为人们本身就没有看到你.  所以我们每一个人,  都应该像树一样的成长,  即使我们现在什么都不是,  但是只要你有树的种子,  即使你被踩到泥土中间,  你依然能够吸收泥土的养分,  自己成长起来.  当你长成参天大树以后,  遥远的地方,人们就能看

bzoj 3744: Gty的妹子序列 主席树+分块

3744: Gty的妹子序列 Time Limit: 15 Sec  Memory Limit: 128 MBSubmit: 101  Solved: 34[Submit][Status] Description 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见…… 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他发现 她们排成了一个序列,每个妹子有一个美丽度. Bakser神犇与他打算研究一下这个妹子序列,于是Bakse

洛谷P1122 最大子树和 (树状dp)

题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的问题.于是当日课后,小明就向老师提出了这个问题: 一株奇怪的花卉,上面共连有N 朵花,共有N-1条枝干将花儿连在一起,并且未修剪时每朵花都不是孤立的.每朵花都有一个“美丽指数”,该数越大说明这朵花越漂亮,也有“美丽指数”为负 数的,说明这朵花看着都让人恶心.所谓“修剪”,意为:去掉其中的一条枝条,这样一株花就成了两株,扔掉

bzoj 3594: [Scoi2014]方伯伯的玉米田 dp树状数组优化

3594: [Scoi2014]方伯伯的玉米田 Time Limit: 60 Sec  Memory Limit: 128 MBSubmit: 314  Solved: 132[Submit][Status] Description 方伯伯在自己的农田边散步,他突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐.方伯伯认为单调不下降序列很美,所以他决定先把一些玉米拔高,再把破坏美感的玉米拔除掉,使得剩下的玉米的高度构成一个单调不下降序列.方伯伯可以选择一个区间,把这个区间的

NYIST 1083 美丽的校园

美丽的校园时间限制:1000 ms | 内存限制:65535 KB难度:3 描述 美丽的校园需要大家维护,作为南工学子,当然有责任! 在计科系门前有n棵树,按一行排列在计科系楼前面,它们在一条直线上,系里的老师觉得要让它们看起来漂亮,它们认为漂亮就是所有的树之间的间隔都相等,现在给出所有树的位置,让你求最少移动树的个数使得树所有看起来漂亮. 输入输入多组数据,首先一个数n(1<=n<=40),表示n棵树,接着n个数,表示每个数的位置xi(-1000000000 ≤ xi ≤ 100000000

一颗开花的树

一个开花的树   ——席慕蓉 如何让你遇见我  在我最美丽的时刻 为这  我已在佛前求了五百年  求佛让我们结一段尘缘  佛於是把我化做一棵树  长在你必经的路旁 阳光下  慎重地开满了花  朵朵都是我前世的盼望 当你走近  请你细听  那颤抖的叶  是我等待的热情 而当你终于无视地走过  在你身后落了一地的  朋友啊  那不是花瓣  那是我哀婉的心 注:源于今天刚看完的一本书 一颗开花的树,布布扣,bubuko.com

Codeforces Round #413, rated, Div. 1 + Div. 2 C. Fountains(贪心 or 树状数组)

http://codeforces.com/contest/799/problem/C 题意: 有n做花园,有人有c个硬币,d个钻石 (2 ≤ n ≤ 100 000, 0 ≤ c, d ≤ 100 000) ,每一个花园用三个维度描述(a,b,c),分别是美丽度,所花钱币个数,钱币种类,当然,钱币之间不能兑换,该人必须要建筑两座花园,如果可以,输出两座花园总的美丽度,否则输出0: 思路: 首先想到分三种情况讨论,两个花园都用硬币,两个花园都用钻石,一个用钻石一个用硬币. 大神的代码真的是很厉害