BZOJ4726: [POI2017]Sabota?
$n \leq 500000$的树,开始有一个点是坏的,如果一个子树中坏点比例(不包括根节点)超过x那这整棵子树就会变坏,问最坏情况下不超过$K$个坏点的情况下$x$最小是多少。
被坑成傻逼。。
可以发现最坏情况下一开始的坏点一定是某个叶子。
首先容易看出的做法是二分完直接dp一次验证是否超过$K$,没想到log居然过不了5e5。
百度上有个大爷:“这不是二分+dp吗,不知道为啥过的人那么少。”妈耶我常数bigbig。。算了反正正解是O(n)的学一学。
$f(i)$--子树$i$中,要使$i$不被孩子污染,$x$至少是多少。$f(i)=max(min(f(j),\frac{size_j}{size_i-1}))$。最后把子树大小超过$K$的子树的$f$取个Max。
#include<stdio.h>
#include<string.h>
//#include<iostream>
#include<algorithm>
using namespace std; #define LL long long
int qread()
{
char c; int s=,t=; while ((c=getchar())<'' || c>'') (c=='-') && (t=-);
do s=s*+c-''; while ((c=getchar())>='' && c<=''); return s*t;
} // int n,K;
#define maxn 500011
struct Edge{int to,next;}edge[maxn<<]; int first[maxn],le=;
void in(int x,int y) {Edge &e=edge[le]; e.to=y; e.next=first[x]; first[x]=le++;} double f[maxn]; int fa[maxn],size[maxn]; int main()
{
// freopen("sab97.in","r",stdin);
n=qread(); K=qread();
for (int i=;i<=n;i++) fa[i]=qread(),in(fa[i],i);
for (int i=;i<=n;i++) size[i]=;
for (int i=n;i;i--) size[fa[i]]+=size[i];
double ans=;
for (int x=n;x;x--)
{
f[x]=;
if (first[x]==) f[x]=;
else for (int i=first[x];i;i=edge[i].next)
{
Edge &e=edge[i];
f[x]=max(f[x],min(f[e.to],size[e.to]*1.0/(size[x]-)));
}
if (size[x]>K) ans=max(ans,f[x]);
}
printf("%.9f\n",ans);
return ;
}
BZOJ4726: [POI2017]Sabota?的更多相关文章
- 【树形dp】bzoj4726: [POI2017]Sabota?
找点概率期望的题做一做 Description 某个公司有n个人, 上下级关系构成了一个有根树.其中有个人是叛徒(这个人不知道是谁).对于一个人, 如果他 下属(直接或者间接, 不包括他自己)中叛徒占 ...
- [bzoj4726][POI2017][Sabota?] (树形dp)
Description 某个公司有n个人, 上下级关系构成了一个有根树.其中有个人是叛徒(这个人不知道是谁).对于一个人, 如果他 下属(直接或者间接, 不包括他自己)中叛徒占的比例超过x,那么这个人 ...
- 【BZOJ4726】[POI2017]Sabota? 树形DP
[BZOJ4726][POI2017]Sabota? Description 某个公司有n个人, 上下级关系构成了一个有根树.其中有个人是叛徒(这个人不知道是谁).对于一个人, 如果他 下属(直接或者 ...
- BZOJ 4726: [POI2017]Sabota?
4726: [POI2017]Sabota? Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 301 Solved ...
- 【BZOJ-4726】Sabota? 树形DP
4726: [POI2017]Sabota? Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 128 Solved ...
- BZOJ 4726: [POI2017]Sabota? 树形dp
4726: [POI2017]Sabota? 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4726 Description 某个公司有n ...
- BZOJ_4726_[POI2017]Sabota?_树形DP
BZOJ_4726_[POI2017]Sabota?_树形DP Description 某个公司有n个人, 上下级关系构成了一个有根树.其中有个人是叛徒(这个人不知道是谁).对于一个人, 如果他 下属 ...
- [POI2017]Sabotaż
[POI2017]Sabotaż 题目大意: 一棵\(n(n\le5\times10^5)\)个结点的树,初始时有一个未知的黑点,其余全为白点.对于一个点,如果其子树中黑点所占比例超过\(x\),则这 ...
- P5958 【[POI2017]Sabotaż】
P5958 [[POI2017]Sabotaż] 题意描述 在一棵以1号节点为根节点的树上,有很多纯洁的白点, BUT,突然有一个黑点出现(可能在任意位置) 它要染黑尽可能多的节点,而在一棵子树中, ...
随机推荐
- 从汇编看c++中的多态
http://www.cnblogs.com/chaoguo1234/archive/2013/05/19/3079078.html 在c++中,当一个类含有虚函数的时候,类就具有了多态性.构造函数的 ...
- 根据HTML语义化编码
语义化标签——http://www.html5jscss.com/html5-semantics-section.html 写HTML代码时应注意什么? 尽可能少的使用无语义的标签div和span: ...
- java面试基础篇(二)
上一篇,我们说了一下线程和Map,或许那些太抽象,不太好理解,也不太方便记忆,我们这次说一些简单的. 1.Q:java的基本数据类型有哪些? A:四种整数类型(byte.short.int.long) ...
- iis隐藏index.php
1.先安装微软的URL Rewrite模块 网址是https://www.iis.net/downloads/microsoft/url-rewrite#additionalDownloads 安装完 ...
- EAGLView介绍
http://book.51cto.com/art/201108/285446.htm
- 使用custom elements和Shadow DOM自定义标签
具体的api我就不写 官网上面多 如果不知道这个的话也可以搜索一下 目前感觉这个还是相当好用的直接上码. <!DOCTYPE html> <html lang="en&q ...
- [SDOi2012]Longge的问题 (数论)
Luogu2303 [SDOi2012]Longge的问题 题目 题目背景 SDOi2012 题目描述 Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N, ...
- linux 5.7.20和5.6.38版本 数据库忘记root密码怎么找回?
1. 5.6.38版本的数据库密码丢失找回方法: 第一步.关数据库 第二步:mysqld_safe --skip-grant-tables --skip-networking & 第三步 ...
- 【Java_基础】java中的常量池
1.java常量池的介绍 java中的常量池,通常指的是运行时常量池,它是方法区的一部分,一个jvm实例只有一个运行常量池,各线程间共享该运行常量池. java常量池简介:java常量池中保存了一份在 ...
- (30)zabbix Trapper 监控项配置
概述 zabbix获取数据有超时时间,如果一些数据需要执行比较长的时间才能获取的话,那么zabbix会出现异常,考虑到这种情况,zabbix增加了Trapper功能,客户端自己提交数据给zabbix, ...