BZOJ4401 块的计数
2016-07-27 19:49
260 查看
Description
小Y最近从同学那里听说了一个十分牛B的高级数据结构——块 状树。听说这种数据结构能在sqrt(N)的时间内维护树上的各种信息,十分的高效。当然,无聊的小Y对这种事情毫无兴趣,只是对把树分块这个操作感到十 分好奇。他想,假如能把一棵树分成几块,使得每个块中的点数都相同该有多优美啊!小Y很想知道,能有几种分割方法使得一棵树变得优美。小Y每次会画出一棵 树,但由于手速太快,有时候小Y画出来的树会异常地庞大,令小Y感到十分的苦恼。但是小Y实在是太想知道答案了,于是他找到了你,一个天才的程序员,来帮 助他完成这件事。Input
第一行一个正整数N,表示这棵树的结点总数,接下来N-1行,每行两个数字X,Y表示编号为X的结点与编号为Y的结点相连。结点编号的范围为1-N且编号两两不同。Output
一行一个整数Ans,表示所求的方案数。Sample Input
61 2
2 3
2 4
4 5
5 6
Sample Output
3HINT
100%的数据满足N<=1000000。正解:迷之推导
解题报告:
推导一下,每种块的大小最多一个方案。具体参见:http://blog.csdn.net/lych_cys/article/details/50676685
//It is made by jump~ #include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> #include <cmath> #include <algorithm> #include <ctime> #include <vector> #include <queue> #include <map> #include <set> #ifdef WIN32 #define OT "%I64d" #else #define OT "%lld" #endif using namespace std; typedef long long LL; const int MAXN = 1000011; int n,ecnt,ans; int first[MAXN],to[MAXN*2],next[MAXN*2],size[MAXN],sum[MAXN]; inline int getint() { int w=0,q=0; char c=getchar(); while((c<'0' || c>'9') && c!='-') c=getchar(); if (c=='-') q=1, c=getchar(); while (c>='0' && c<='9') w=w*10+c-'0', c=getchar(); return q ? -w : w; } inline void dfs(int x,int fa){ size[x]=1; for(int i=first[x];i;i=next[i]) { int v=to[i]; if(v==fa) continue; dfs(v,x); size[x]+=size[v]; } sum[size[x]]++; } inline void work(){ n=getint(); int x,y; for(int i=1;i<n;i++) { x=getint(); y=getint(); next[++ecnt]=first[x]; first[x]=ecnt; to[ecnt]=y; next[++ecnt]=first[y]; first[y]=ecnt; to[ecnt]=x; } dfs(1,0); for(int i=1;i<=n;i++) { for(int j=i*2;j<=n;j+=i) sum[i]+=sum[j]; if(sum[i]*i==n) ans++; } printf("%d",ans); } int main() { work(); return 0; }
相关文章推荐
- 【转】3篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:官方原生方法分析
- 练手项目
- 我的Android进阶之旅------>Android Studio使用statistics插件统计项目代码总行数
- POJ 2253 Frogger
- ORA-00031:标记要终止的会话 解决方法
- oracle审计详解
- Xilium.CefGlue怎么使用Js调用C#方法
- 博弈论入门
- C语言学习
- 滑条QSlider
- Visualizing and Understanding Convolutional Networks
- Android中Service 使用详解(LocalService + RemoteService)
- 地铁的研究
- fragment2
- django开发中从前端页面传值
- JQuery插件使用之Validation 快速完成表单验证的几种方式
- JQuery插件使用之Validation 快速完成表单验证的几种方式
- BZOJ 2120: 数颜色
- 关于jquery判断对象是否为空
- Java Se----面向对象