Description

题目链接

Solution

因为一个节点染黑了子树就都被染黑了,所以最后染黑的点集必然是一棵子树。

可以得出的结论是,如果被染黑的节点在节点 \(a\) 的子树中,而 \(a\) 没有被染黑,那么 \(a\) 的任意次祖先都不会被染黑。

从另一个角度理解就是,染黑的节点在 \(a\) 子树中的大小占比不超过 \(x\) ,那么在 \(a\) 的祖先里占比更小,显然也超不过 \(x\) 。

设 \(f[i]\) 表示节点 \(i\) 不被染黑的最小的 \(x\) ,那么合法情况为:

子节点不染黑(上述结论),或子节点大小在儿子中占比不超过 \(x\)

特殊的,对于叶节点,最差的情况显然是它被染黑,所以 \(f[u]=1\) 。

因此转移方程为

\[f[i]=\max_{v\in son[u]} \bigg\{\min\bigg(f[v], \frac{size[v]}{size[u] - 1}\bigg)\bigg\}
\]

注意到大小不超过 \(k\) 的子树染不染黑没关系,所以

\[ans = \max_{size[u]>k}\{f[u]\}
\]

#include <cmath>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define N 500005
using namespace std; inline int rd() {
int x = 0;
char c = getchar();
while (!isdigit(c)) c = getchar();
while (isdigit(c)) {
x = x * 10 + (c ^ 48); c = getchar();
}
return x;
} double ans, f[N]; int n, m, tot, hd[N], sz[N]; struct edge{int to, nxt;} e[N << 1]; inline void add(int u, int v) {
e[++tot].to = v; e[tot].nxt = hd[u]; hd[u] = tot;
e[++tot].to = u; e[tot].nxt = hd[v]; hd[v] = tot;
} void dfs(int u, int fa) {
sz[u] = 1;
for (int i = hd[u], v; i; i = e[i].nxt)
if ((v = e[i].to) != fa) {
dfs(v, u); sz[u] += sz[v];
}
if (sz[u] == 1) {f[u] = 1.0; return;}
for (int i = hd[u], v; i; i = e[i].nxt)
if ((v = e[i].to) != fa)
f[u] = max(f[u], min(f[v], (double)sz[v] / (sz[u] - 1)));
if (sz[u] > m) ans = max(ans, f[u]);
} int main() {
n = rd(); m = rd();
for (int i = 2; i <= n; ++i) add(i, rd());
dfs(1, 0);
printf("%.10lf\n", ans);
return 0;
}

[ POI 2017 ] Sabota?的更多相关文章

  1. BZOJ 4726 POI 2017 Sabota? 树形DP

    4726: [POI2017]Sabota? Time Limit: 20 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 128  Solved ...

  2. yd的拔钉子之路之 POI 2017

    写在前面的一些话 如果我NOIP没退役,这大概会写成一个系列吧,所以这算是系列的开始,要写一些奇怪的东西? 首先解释下什么叫“拔钉子”,其实就是在钉子上做题嘛......至于钉子具体是个什么东西就当面 ...

  3. [ POI 2017 ] Podzielno

    \(\\\) \(Description\) \(B\)进制数,每个数字\(i(i\in [0,B-1])\)有\(A_i\)个.用这些数字组成一个最大的\(B\)进制数\(X\)(不能有前导零,不需 ...

  4. Apache POI解析excel文件

    这里需要用到poi.jar和poi-ooxml.jar  没有的可以去http://mvnrepository.com/下载 import org.apache.poi.POIXMLDocument; ...

  5. 一个基于POI的通用excel导入导出工具类的简单实现及使用方法

    前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...

  6. Java使用POI为Excel打水印,调整列宽并设置Excel只读(用户不可编辑)

    本文介绍在Java语言环境下,使用POI为Excel打水印的解决方案,具体的代码编写以及相关的注意事项. 需求描述: 要求通过系统下载的Excel都带上公司的水印,列宽调整为合适的宽度,并且设置为不可 ...

  7. poi入门之读写excel

    Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能.该篇是介绍poi基本的 ...

  8. 位置信息类API调用的代码示例合集:中国省市区查询、经纬度地址转换、POI检索等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 中国省市区查询:2017最新中国省市区地址 经纬度地址转换:经纬度 ...

  9. EXCEL上传POI

    Java SpringMVC POI上传excel并读取文件内容 2017年11月27日 15:26:56 强人锁男. 阅读数:15329   用的SSM框架,所需要的jar包如图所示:,链接地址:j ...

随机推荐

  1. eclipse安装lombok和常用注解使用

    1.下载lombok.jar lombok 的官方网址:http://projectlombok.org/   2.运行lombok.jar: java -jar  D:\eclipse-luna\l ...

  2. html5--6-67 阶段练习8-弹性三列布局

    html5--6-67 阶段练习8-弹性三列布局 学习要点 运用弹性盒子模型完成一个三列布局,加深对学过知识点的综合应用能力. 了解用百分比设置元素高度的方法. @charset="UTF- ...

  3. Linux系统的方法论

    Linux系统的方法论 https://www.cnblogs.com/youxia/p/LinuxDesktop001.html 阅读目录 特别说明 什么情况下适合玩Linux桌面 Linux桌面系 ...

  4. [laravel]phpunit

    step1.install phpunit composer.json require中增加 "phpunit/phpunit":"4.0.*" 执行 comp ...

  5. oracle 查看表是否存在、包含某字段的表、表是否包含字段

    表是否存在: select count(*) from user_tables where table_name = #{tablename} 包含某个字段的表 select * from user_ ...

  6. 记一次OutOfMemory定位过程-续

    在前文<记一次OutOfMemory定位过程>完成时最终也没有定位到ECS 中JVM Heap size无法控制的原因,今天再次尝试终于有了一些线索,翻查了ECS的部署脚本发现了memor ...

  7. ecb-2.40与cedet-1.1的兼容(转载)

    转自:http://blog.csdn.net/cnsword/article/details/7474119 今天凑热闹把fedora升级到了17,emacs升级到了24,但是悲剧了,显示cedet ...

  8. Spring-SpringMVC父子容器&AOP使用总结

    此文已由作者尧飘然授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Spring&SpringMVC Spring&SpringMVC作为bean管理容器和MV ...

  9. python __builtins__ float类 (25)

    25.'float', 用于将整数和字符串转换成浮点数. class float(object) | float(x) -> floating point number | | Convert ...

  10. Luogu P2326 AKN's PPAP【按位贪心】

    题目描述 “I have a pen,I have an apple.Eh,Apple-Pen!. I have a pen,I have pineapple.En,Pineapple-Pen! Ap ...