BZOJ4401 块的计数
传送门
分析
结论题。假设分成的每块大小为 \(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 块的计数相关推荐
- BZOJ4401:块的计数(乱搞)
Description 小Y最近从同学那里听说了一个十分牛B的高级数据结构--块状树.听说这种数据结构能在sqrt(N)的时间内维护树上的各种信息,十分的高效.当然,无聊的小Y对这种事情毫无兴趣,只是 ...
- 图论 —— 环与块 —— 连通块的计数
[概述] 对于给出 n 个点 m 条边的图来说,对任意两点,从顶点 Vi 到顶点 Vj 有路径,则称 Vi 和 Vj 是连通的,两者可视为一个连通块,因此,连通块的计数本质就是求其连通分量,可采用 d ...
- bzoj 4401: 块的计数
4401: 块的计数 Description 小Y最近从同学那里听说了一个十分牛B的高级数据结构--块状树.听说这种数据结构能在sqrt(N)的时间内维护树上的各种信息,十分的高效.当然,无聊的小Y对 ...
- bzoj 4401: 块的计数(结论)
4401: 块的计数 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 414 Solved: 231 [Submit][Status][Discus ...
- 2017.9.26 块的计数 思考记录
这种题就属于那种描述很简单,要求很简单,但就是无从下手的题 这个题我只有n根n做法..枚举因数检验.. 首先对于任何块的大小,方案唯一,这是显然的,,如果划分位置改变1,一定有一个位置+1,一个位置- ...
- [学习笔记]多项式与有标号简单图计数
学了一天的有标号无向图计数真的自闭了- 本篇文章是基于2019WC汪乐平大佬的讲课课件<生成函数,多项式算法与图的计数>编写的. 注意:文中所有生成函数都规定为指数型生成函数(EGF),请 ...
- HDU 4408 Minimum Spanning Tree 最小生成树计数
http://acm.hdu.edu.cn/showproblem.php?pid=4408 题意:求最小生成树个数 题解:对于Kruskal算法,我们发现,最小生成树要想用多种方法就要有长度相同的边 ...
- 它又来了!C**HashMap是如何保证线程安全的?会用不就完了?
欢迎关注方志朋的博客,回复"666"获面试宝典 阅读此篇文章,你需要有以下知识基础 Java内存模型,可见性问题 CAS HashMap底层原理 我们知道,在日常开发中使用的Has ...
- 我一顿操作把电脑弄崩了!!!数据全没了!!!我该怎么办?
来自:Java建设者 文件系统的管理和优化 能够使文件系统工作是一回事,能够使文件系统高效.稳定的工作是另一回事,下面我们就来探讨一下文件系统的管理和优化. 磁盘空间管理 文件通常存在磁盘中,所以如何 ...
最新文章
- mysql数据库被黑客删除,您做好防范了吗?
- 嵌入式 说明书 软件著作权_软件著作权详细解读
- IntelliJ IDEA普通的Java项目如何转成Maven Web项目
- ActionScript 3.0 学习笔记三
- Android启动后icon应用图标不能显示的可能问题
- java panel frame_Java 版 (精华区)--Frame和Panel的区别【转载】
- Xilinx FPGA PLL输出不能直接连接IO解决方法
- 分享一个检测用户是否用手机(Mobile)访问网站的 PHP 类
- 溢出植入型木马(后门)的原型实现 作者:FLASHSKY(原创)
- 深度学习visio作图技巧
- 电路设计_MOS管导通条件
- vim 快捷键 总结-编辑文件
- POJ3322Bloxorz I
- css 文字超出三行展示省略号
- 如何快速入门产品经理?
- 应用在触摸电视机中的触摸芯片
- unity中实现ue眼球的渲染
- 三个变量存在一个协整方程_计量经济学31个简答参考答案
- android 直播评论动画,Android自定义View实现直播点赞特效
- Java自学习day15-抽象类练习-编写工资系统,实现不同类型员工(多态)的按月发放工资