题目大意:给定一棵$n$个点的树,将叶子节点分为数个集合,使集合里点对最长距离不超过$k$,求最少集合数。

题解:贪心,发现将叶子节点分成集合等于把节点划分集合,答案是一样的。因为一定有一个点,到非叶子节点$p$的儿子的距离比到$p$远。然后发现一个集合一定是连续的(或者连续的一定最优),不然不完全可以把中间连起来,且合法。

$dfs$,如果一个点的最长两个点长度和大于$k$就加一个集合

注意要用非叶子节点当根,最后答案要加一

卡点:没用非叶子节点当根

C++ Code:

#include <cstdio>
#include <vector>
#include <algorithm>
#define maxn 1000010
int head[maxn], cnt;
struct Edge {int to, nxt;
} e[maxn << 1];
inline void add(int a, int b) {e[++cnt] = (Edge) {b, head[a]}; head[a] = cnt;
}
int n, k, ans;
int ind[maxn], fa[maxn], M[maxn];
void dfs(int u) {if (ind[u] < 2) return ;std::vector<int> E;for (int i = head[u]; i; i = e[i].nxt) {int v = e[i].to;if (v != fa[u]) {fa[v] = u;dfs(v);E.push_back(M[v] + 1);}}std::sort(E.begin(), E.end());int now = E.size() - 1;for (; now; now--) if (E[now] + E[now - 1] > k) ans++;else break;M[u] = E[now];
}
int main() {scanf("%d%d", &n, &k);int rt = 1;for (int i = 1, a, b; i < n; i++) {scanf("%d%d", &a, &b);add(a, b), add(b, a);ind[a]++, ind[b]++;if (ind[a] != 1) rt = a;if (ind[b] != 1) rt = b;}dfs(rt);printf("%d\n", ans + 1);return 0;
}

  

转载于:https://www.cnblogs.com/Memory-of-winter/p/9744609.html

[CF1042F]Leaf Sets相关推荐

  1. CF1042F Leaf Sets (贪心+树上构造)

    题目大意:给你一棵树,让你对叶节点分组,保证每组中,任意两个叶节点之间的距离不大于K,求最小的组数 手动yy的贪心竟然对的 对于每个节点,维护一个$ma[i]$,表示在$i$节点的子树内 未被分组的叶 ...

  2. TOJ 4008 The Leaf Eaters

    |A∪B∪C|=|A|+|B|+|C|-|A∩B|-|A∩C|-|B∩C|+|A∩B∩C| 这个是集合的容斥,交集差集什么的,这个在概率论经常用到吧 4008: The Leaf Eaters   T ...

  3. lists,tuples and sets of Python

    (python2.7.x) Lists 列表 列表是一个有序序列(集合),可变的(可以修改),可以理解为其他语言中的数组类型,但是列表更灵活更强大. 列表由方括号[]来定义的,它的元素可以是任意类型或 ...

  4. [pcl::VoxelGrid::applyFilter] Leaf size is too small for the input dataset. Integer indices would ov

    1. 报错日志: Python-pcl 点云下采样时报错如下: [pcl::VoxelGrid::applyFilter] Leaf size is too small for the input d ...

  5. H.264 picture parameter sets成员值含义学习笔记

    -picture parameter sets 1. pic_parameter_set_id pic_parameter_set_id指明了在切片头中对应的某个psp.pic_parameter_s ...

  6. 美团(Leaf)分布式ID生成器,好用的一批!

    不了解分布式ID的同学,先行去看<一口气说出 9种 分布式ID生成方式,面试官有点懵了>温习一下基础知识,这里就不再赘述了 美团(Leaf) Leaf是美团推出的一个分布式ID生成服务,名 ...

  7. 粗糙集(Rough sets)、模糊逻辑(Fuzzy Logic)

    第一章  粗糙集理论简介 第一节  粗糙集理论的产生与应用背景 在20世纪70年代,波兰学者Z.Pawlak和一些波兰科学院.波兰华沙大学的逻辑学家们,一起从事关于信息系统逻辑特性的研究,粗糙集理论就 ...

  8. zoj——3556 How Many Sets I

    How Many Sets I Time Limit: 2 Seconds      Memory Limit: 65536 KB Give a set S, |S| = n, then how ma ...

  9. Leaf:GO语言游戏框架介绍及入门

    Leaf 是一个由 Go 语言(golang)编写的开发效率和执行效率并重的开源游戏服务器框架.Leaf 适用于各类游戏服务器的开发,包括 H5(HTML5)游戏服务器. Leaf 的关注点: 良好的 ...

最新文章

  1. 神经网络通用近似定理
  2. Python_面向对象_类1
  3. 关于mysql触发器的问题:执行事件插入的字段是否一定要满足字段的所有约束条件?
  4. 2014年,马上要上班啦,希望一切顺利
  5. Kafka的Spring Cloud Stream
  6. 非类型模板参数(参考《C++ Templates 英文版第二版》)
  7. Android获取md5和sha
  8. 苹果手机型号对应表及尺寸
  9. 2 --> PCIE 协议栈的框架详解
  10. python 3d游戏引擎哪个好_五大开源游戏引擎介绍
  11. Z-TEK USB转422接口问题 RS422接口常见使用注意事项
  12. Nginx下的反向代理 双层代理 负载均衡
  13. 转:关于ASP操作Access数据库时出现死锁.ldb的解决方法
  14. 最激励人心\作为一个程序员
  15. cgb2110-day02
  16. concat特征融合_小目标检测文献相关(特征融合)
  17. 【小迪实地】Webdav安全配置相关与漏洞利用
  18. HTTP协议中的一些概念
  19. 一套史诗级版vue详解!
  20. vue如何实现在页面上画画_Vue使用Canvas绘制图片、矩形、线条、文字,下载图片...

热门文章

  1. SAP MM 采购发票上的价格与采购订单上价格的差异
  2. SAP WM 确认TO单的时候不能修改目的地STORAGE BIN
  3. AI、ML 和数据工程 | InfoQ 趋势报告(2021 年)
  4. Adam又要“退休”了?耶鲁大学团队提出AdaBelief
  5. 全球最大资管公司押注人工智能!要做这些大事
  6. 纯干货|目前看到的BERT比较透彻的文章,强烈推荐
  7. 揭秘人工智能面试内容:8家国际巨头机器学习面试题目整理
  8. AI研究员收集NLP数据的四种创意方法(大牛分享)
  9. 3分钟掌握支持向量机-机器学习面试必备
  10. 一份数学小白也能读懂的「马尔可夫链蒙特卡洛方法」入门指南