题目链接 BZOJ

洛谷

题意: 将树划分为k个连通块,要求每个连通块大小相同。输出可能的大小。

结论: 满足条件时颜色的连通块数为k,当且仅当有 \(n/k\) 个节点满足它的子树是k的倍数(显然还有 \(k|n\) )。

证明就不证了,说下理解(然而也说不清楚。。)。

比如一个点的子树大小为 \(x*k\),如果满足上述条件,即这棵子树(包含根节点)一定有x个点子树大小为k的倍数,且把sz[]为k的点依次删去,最后肯定能删掉整棵子树。

因为它就 \(x*k\) 那么大。。说不清楚啊。。想想应该是合理的。

因为父节点编号一定比子节点小,更新sz[]时倒序循环一遍即可,不需要DFS。

//14964kb	3036ms
#include <cstdio>
#include <cctype>
#include <cstring>
#define gc() getchar()
#define XXX (19940105)
const int N=1200005; int n,fa[N],sz[N],num[N],cnt,p[10005],lim[10005]; inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
} int main()
{
n=read();
for(int i=2; i<=n; ++i) if(!(n%i)) p[++cnt]=i,lim[cnt]=n/i;//if(i*i!=n) p[++cnt]=n/i;
for(int T=1; T<=10; ++T)
{
memset(sz,0,sizeof sz), memset(num,0,sizeof num);;
for(int i=2; i<=n; ++i) fa[i]=T==1?read():((fa[i]+XXX)%(i-1)+1);//read()不怂233.
for(int i=n; i; --i) sz[fa[i]]+=(++sz[i]);
for(int i=1; i<=n; ++i) ++num[sz[i]];
printf("Case #%d:\n1\n",T);//判掉1也行。
for(int t,i=1; i<=cnt; ++i)
{
t=0;//子树sz为x*p[i]的节点个数
for(int j=1; j<=lim[i]; ++j) t+=num[j*p[i]];
if(t*p[i]==n) printf("%d\n",p[i]);
}
}
return 0;
}

BZOJ.3004.[SDOI2012]吊灯(结论)的更多相关文章

  1. P2351 [SDOi2012]吊灯

    P2351 [SDOi2012]吊灯 https://www.luogu.org/problemnew/show/P2351     题意: 一棵树,能否全部分成大小为x的联通块. 分析: 显然x是n ...

  2. [bzoj P2726] [SDOI2012]任务安排

    [bzoj P2726] [SDOI2012]任务安排 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1204 Solved: 349[Submit] ...

  3. 【BZOJ】【3004】吊灯

    思路题 要将整棵树分成大小相等的连通块,那么首先我们可以肯定的是每块大小x一定是n的约数,且恰好分成$\frac{n}{x}$块,所以我有了这样一个思路:向下深搜,如果一个节点的size=x,就把这个 ...

  4. BZOJ 3901 棋盘游戏 (找结论+枚举+贪心)

    题面 略 BZOJ 传送门 分析 具体分析见 dalao博客 妙就妙在当i<x,j<xi<x,j<xi<x,j<x时,(i,j)(i,j)(i,j) ^ (i,x) ...

  5. BZOJ 2705: [SDOI2012]Longge的问题 [欧拉函数]

    2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 2553  Solved: 1565[Submit][ ...

  6. BZOJ 2705: [SDOI2012]Longge的问题

    2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 2554  Solved: 1566[Submit][ ...

  7. BZOJ 2705: [SDOI2012]Longge的问题 GCD

    2705: [SDOI2012]Longge的问题 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnl ...

  8. bzoj 2706: [SDOI2012]棋盘覆盖 Dancing Link

    2706: [SDOI2012]棋盘覆盖 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 255  Solved: 77[Submit][Status] ...

  9. bzoj 2705: [SDOI2012]Longge的问题 歐拉函數

    2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 1035  Solved: 669[Submit][S ...

随机推荐

  1. centos内存自动清理脚本及限制tomcat内存占用

    使用crontab定时每天自动清理系统内存 00 00 * * * /root/Cached.sh [root@localhost ~]# cat Cachec.sh #! /bin/bash# ca ...

  2. bzoj千题计划253:bzoj2154: Crash的数字表格

    http://www.lydsy.com/JudgeOnline/problem.php?id=2154 #include<cstdio> #include<algorithm> ...

  3. html5 canvas贝塞尔曲线篇(上)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. 利用 ASP.NET 的内置功能抵御 Web 攻击 (1)

    摘要: Dino 总结了最常见的 Web 攻击类型,并介绍了 Web 开发人员可以如何使用 ASP.NET 的内置功能来改进安全性. 一.ASP.NET 开发人员应当始终坚持的做法 如果您正在阅读本文 ...

  5. 第6月第6天 opengles 三角形

    1. http://blog.csdn.net/u010963658/article/details/52691578 2.多张图 https://www.oschina.net/question/2 ...

  6. 论参数self

    此篇文章仅适用于py3.在py2中,a.fuc(x)中的参数x必须是 类a的实例对象,而py3则可以是任意对象.参考绑定方法和非绑定方法 当一个对象添加了一个方法,并且此方法的第一个参数为self,或 ...

  7. python-super1

    一.问题的发现与提出 一般子类在继承父类后,若子类覆盖了父类,则只执行子类,不执行父类.如果没有,则执行父类代码. 发现使用super()后,子类,父类都会执行,比较疑惑,记录学习,super知识点 ...

  8. RabbitMQ Headers Exchange示例

    (1).发布者 var connectionFactory = new ConnectionFactory() { HostName="192.168.205.128",UserN ...

  9. mac zsh环境配置java_home环境变量

    用zsh,修改-/.zshrc 修改这些文件之后,重修打开terminal,配置不会丢 首先确保已经安装了jdk: ## check the present running java which ja ...

  10. spring各个版本源码

    各版本源码下载地址 http://maven.springframework.org/release/org/springframework/spring/