传送门

分析

结论题。假设分成的每块大小为 \(k\),则分成了 \(\frac{n}{k}\) 块,也就是 \(k|n\) ,有 \(\frac{n}{k}\) 个节点可以作为每块的根节点,显然,这些节点中每个节点的子树大小一定是 \(k\) 的倍数。

于是,我们可以先 \(dfs\) 一遍求出每个节点子树大小,然后枚举 \(k\) ,统计 \(sz\) 为 \(k\) 的倍数的节点数量,记为 \(num\) ,再判断 \(num\) 是否等于 \(\frac{n}{k}\) 即可。

代码

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define il inline
#define re register
#define maxn 1000005
#define tie0 cin.tie(0),cout.tie(0)
#define fastio ios::sync_with_stdio(false)
#define File(x) freopen(x".in","r",stdin);freopen(x".out","w",stdout)
using namespace std;
typedef long long ll;template <typename T> inline void read(T &x) {T f = 1; x = 0; char c;for (c = getchar(); !isdigit(c); c = getchar()) if (c == '-') f = -1;for ( ; isdigit(c); c = getchar()) x = x * 10 + (c ^ 48);x *= f;
}struct edge {int to, nxt;
} e[maxn<<1];int n, cnt, ans;
int sz[maxn], head[maxn<<1], ton[maxn];void insert(int u, int v) {e[++cnt].to = v, e[cnt].nxt = head[u], head[u] = cnt;e[++cnt].to = u, e[cnt].nxt = head[v], head[v] = cnt;
}void dfs(int u, int fa) {sz[u] = 1;for (int i = head[u]; i; i = e[i].nxt) {int v = e[i].to;if (v != fa) {dfs(v, u);sz[u] += sz[v];}}
}int main() {int u, v;read(n);for (int i = 1; i < n; ++i) {read(u), read(v);insert(u, v);}dfs(1, 0);for (int i = 1; i <= n; ++i) ton[sz[i]]++;for (int k = 1; k <= n; ++k) {int num = 0;if (n % k == 0) {for (int i = k; i <= n; i += k) num += ton[i];if (num == n / k) ans++;}}printf("%d", ans);return 0;
}

转载于:https://www.cnblogs.com/hlw1/p/11436825.html

BZOJ4401 块的计数相关推荐

  1. BZOJ4401:块的计数(乱搞)

    Description 小Y最近从同学那里听说了一个十分牛B的高级数据结构--块状树.听说这种数据结构能在sqrt(N)的时间内维护树上的各种信息,十分的高效.当然,无聊的小Y对这种事情毫无兴趣,只是 ...

  2. 图论 —— 环与块 —— 连通块的计数

    [概述] 对于给出 n 个点 m 条边的图来说,对任意两点,从顶点 Vi 到顶点 Vj 有路径,则称 Vi 和 Vj 是连通的,两者可视为一个连通块,因此,连通块的计数本质就是求其连通分量,可采用 d ...

  3. bzoj 4401: 块的计数

    4401: 块的计数 Description 小Y最近从同学那里听说了一个十分牛B的高级数据结构--块状树.听说这种数据结构能在sqrt(N)的时间内维护树上的各种信息,十分的高效.当然,无聊的小Y对 ...

  4. bzoj 4401: 块的计数(结论)

    4401: 块的计数 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 414  Solved: 231 [Submit][Status][Discus ...

  5. 2017.9.26 块的计数 思考记录

    这种题就属于那种描述很简单,要求很简单,但就是无从下手的题 这个题我只有n根n做法..枚举因数检验.. 首先对于任何块的大小,方案唯一,这是显然的,,如果划分位置改变1,一定有一个位置+1,一个位置- ...

  6. [学习笔记]多项式与有标号简单图计数

    学了一天的有标号无向图计数真的自闭了- 本篇文章是基于2019WC汪乐平大佬的讲课课件<生成函数,多项式算法与图的计数>编写的. 注意:文中所有生成函数都规定为指数型生成函数(EGF),请 ...

  7. HDU 4408 Minimum Spanning Tree 最小生成树计数

    http://acm.hdu.edu.cn/showproblem.php?pid=4408 题意:求最小生成树个数 题解:对于Kruskal算法,我们发现,最小生成树要想用多种方法就要有长度相同的边 ...

  8. 它又来了!C**HashMap是如何保证线程安全的?会用不就完了?

    欢迎关注方志朋的博客,回复"666"获面试宝典 阅读此篇文章,你需要有以下知识基础 Java内存模型,可见性问题 CAS HashMap底层原理 我们知道,在日常开发中使用的Has ...

  9. 我一顿操作把电脑弄崩了!!!数据全没了!!!我该怎么办?

    来自:Java建设者 文件系统的管理和优化 能够使文件系统工作是一回事,能够使文件系统高效.稳定的工作是另一回事,下面我们就来探讨一下文件系统的管理和优化. 磁盘空间管理 文件通常存在磁盘中,所以如何 ...

最新文章

  1. mysql数据库被黑客删除,您做好防范了吗?
  2. 嵌入式 说明书 软件著作权_软件著作权详细解读
  3. IntelliJ IDEA普通的Java项目如何转成Maven Web项目
  4. ActionScript 3.0 学习笔记三
  5. Android启动后icon应用图标不能显示的可能问题
  6. java panel frame_Java 版 (精华区)--Frame和Panel的区别【转载】
  7. Xilinx FPGA PLL输出不能直接连接IO解决方法
  8. 分享一个检测用户是否用手机(Mobile)访问网站的 PHP 类
  9. 溢出植入型木马(后门)的原型实现 作者:FLASHSKY(原创)
  10. 深度学习visio作图技巧
  11. 电路设计_MOS管导通条件
  12. vim 快捷键 总结-编辑文件
  13. POJ3322Bloxorz I
  14. css 文字超出三行展示省略号
  15. 如何快速入门产品经理?
  16. 应用在触摸电视机中的触摸芯片
  17. unity中实现ue眼球的渲染
  18. 三个变量存在一个协整方程_计量经济学31个简答参考答案
  19. android 直播评论动画,Android自定义View实现直播点赞特效
  20. Java自学习day15-抽象类练习-编写工资系统,实现不同类型员工(多态)的按月发放工资

热门文章

  1. 2022-2028年中国网络直播行业深度调研及投资前景预测报告
  2. Go 学习笔记(81)— Go 性能分析工具 pprof
  3. 数据结构(03)— 数据处理基本操作(数据的查找、新增、删除、修改)
  4. 分析两小段c++代码 关于unsigned运算的坑
  5. 难忘的一天——装操作系统(四)
  6. GPT3后可考虑的方向-知识推理与决策任务及多模态的信息处理
  7. 我爱自然语言处理bert ner chinese
  8. 深度学习与TensorFlow
  9. AlexeyAB DarkNet YOLOv3框架解析与应用实践(五)
  10. Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读