题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4401

  假设把树划分为x个节点作一块,那么显然只有当x|n的时候才可能存在划分方案,并且这种划分方案是唯一的。

  并且对于一棵树,只有当有n/x个节点的子树大小%x==0的时候才可能存在划分方案,因为如果把一棵树的根节点及其所在的块切掉,那么剩下的子树若存在划分方案,一定满足这些子树的节点个数%x==0。

  所以这道题就变成一道水题了。

  代码(我本来想着用bfs代替dfs会跑得快一点,然而似乎并没有什么卵用):

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<cmath>
  4. #include<cstdlib>
  5. #include<ctime>
  6. #include<algorithm>
  7. #include<queue>
  8. #include<vector>
  9. #include<map>
  10. #define ll long long
  11. #define min(a,b) (a<b?a:b)
  12. #define max(a,b) (a>b?a:b)
  13. ll read()
  14. {
  15. ll tmp=; char f=,c=getchar();
  16. while(c<''||''<c){if(c=='-')f=-; c=getchar();}
  17. while(''<=c&&c<=''){tmp=tmp*+c-''; c=getchar();}
  18. return tmp*f;
  19. }
  20. using namespace std;
  21. int size[],q[],fa[],cnt[];
  22. int fir[],ne[],to[];
  23. int n,tot=;
  24. void add(int x,int y){to[++tot]=y; ne[tot]=fir[x]; fir[x]=tot;}
  25. int main()
  26. {
  27. int i;
  28. n=read();
  29. for(i=;i<n;i++){
  30. int x=read(),y=read();
  31. add(x,y); add(y,x);
  32. }
  33. int h=,t=; q[]=; fa[]=-;
  34. while(h<=t){
  35. for(i=fir[q[h]];i;i=ne[i])
  36. if(!fa[to[i]])q[++t]=to[i],fa[to[i]]=q[h];
  37. ++h;
  38. }
  39. for(i=n;i;i--){
  40. size[q[i]]=;
  41. for(int j=fir[q[i]];j;j=ne[j])
  42. if(to[j]!=fa[q[i]])size[q[i]]+=size[to[j]];
  43. ++cnt[size[q[i]]];
  44. }
  45. int ans=;
  46. for(i=;i<=n;i++)
  47. if(n%i==){
  48. int tmp=;
  49. for(int j=i;j<=n;j+=i)tmp+=cnt[j];
  50. if(tmp*i==n)++ans;
  51. }
  52. printf("%d\n",ans);
  53. return ;
  54. }

跑得慢也会输

  

【bzoj4401】块的计数(水dfs)的更多相关文章

  1. bzoj4401: 块的计数

    首先,块的大小确定的话,可以发现方案最多只有1种 然后就可以O(nsqrt(n))搞,不过会TLE 接着我们又发现,一个节点可以作一个块的根,当且仅当该节点的size能被块的大小整除 然后就可以O(n ...

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

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

  3. BZOJ4401: 块的计数 思维题

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

  4. 【BZOJ4401/3004】块的计数/吊灯 乱搞

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

  5. bzoj 4401: 块的计数

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

  6. bzoj 4401 块的计数 思想+模拟+贪心

    块的计数 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 455  Solved: 261[Submit][Status][Discuss] Descr ...

  7. DFS求连通块(漫水填充法)

    G - DFS(floodfill),推荐 Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I6 ...

  8. 【bzoj4401】块的计数 结论题

    题目描述 给出一棵n个点的树,求有多少个si使得整棵树可以分为n/si个连通块. 输入 第一行一个正整数N,表示这棵树的结点总数,接下来N-1行,每行两个数字X,Y表示编号为X的结点与编号为Y的结点相 ...

  9. 【bzoj4401】块的计数

    首先,块的大小确定的话,可以发现方案最多只有1种 然后就可以O(nsqrt(n))搞,不过会TLE 接着我们又发现,一个节点可以作一个块的根,当且仅当该节点的size能被块的大小整除 然后就可以O(n ...

随机推荐

  1. Uncaught Error: artDialog: Document types require more than xhtml1.0

    这需要声明html文档,加上如下声明就不会报错了! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...

  2. CGI FastCGI PHP-CGI PHP-FRM

    CGI(Common GateWay Interface )通用网关接口,CGI可以让一个客户端,从网页浏览器向执行在Web服务器上的程序请求数据.CGI描述了客户端和这个程序之间传输数据的一种协议标 ...

  3. Invalid bound statement (not found) 问题处理

    最近开发过程中遇到一个BUG:Invalid bound statement (not found): com.mapper.ResourceIdMappingsBatchMapper.deleteR ...

  4. 内核源码阅读vim+cscope+ctags+taglist

    杜斌博客:http://blog.db89.org/kernel-source-read-vim-cscope-ctags-taglist/ 武特博客:http://edsionte.com/tech ...

  5. :eq()中的参数详解——需要注意

    :eq()的括号中的参数如果是非负数则在DOM对象中按从上到下的顺序查找指定的元素,但是,如果是是负数,则在DOM中从下向上查找指定元素. 如下实例: 如果 $("#divTag div:e ...

  6. Springboot中jar 重复冲突 导致 静态资源加载问题!

    这个jar 其实在common 中也是存在的  ,当时没注意看,就导入进来了,然后  css js 等一些静态资源全部不能加载!具体原因我没去深挖!后面找个时间深挖下,先填坑!

  7. mix-in class selectors

    语言特性 | Less 中文网 http://lesscss.cn/features/#mixins-feature Mixins "mix-in" properties from ...

  8. Bean\Entity\Model\POJO\Dto\EJB简单解析

    一.Bean 对于Bean而言,只要是Java的类的就可以称为一个Bean, 更用在Spring上,被Spring管理的对象就可以将其称作为Bean. 它不仅仅可以包括对象的属性以及get,set方法 ...

  9. 如何定义 match 常量?

    namespace MathConstants { const double E = 2.71828182845904523536; // e const double LOG2E = 1.44269 ...

  10. 设置mysql外网访问

    任意主机以用户root和密码mypwd连接到mysql服务器mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'myp ...