BZOJ 4726: [POI2017]Sabota?
4726: [POI2017]Sabota?
Time Limit: 20 Sec Memory Limit: 128 MBSec Special Judge
Submit: 301 Solved: 127
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
1
1
2
2
2
3
7
3
Sample Output
HINT
Source
树形DP。
f[i]表示i节点不叛变,最大的x值。
f[u] = max { min(f[v], p[v]) | v是u的儿子 }
其中p[i]是i节点子树大小占父节点所有儿子子树大小的比例。
#include <bits/stdc++.h> inline int get_c(void)
{
static const int siz = ; static char buf[siz];
static char *head = buf + siz;
static char *tail = buf + siz; if (head == tail)
fread(head = buf, , siz, stdin); return *head++;
} inline int get_i(void)
{
register int ret = ;
register int neg = false;
register int bit = get_c(); for (; bit < ; bit = get_c())
if (bit == '-')neg ^= true; for (; bit > ; bit = get_c())
ret = ret * + bit - ; return neg ? -ret : ret;
} const int maxn = ;
const double inf = 2e18; int n;
int m;
int edges;
int fa[maxn];
int hd[maxn];
int to[maxn];
int nt[maxn]; inline void add(int u, int v)
{
nt[edges] = hd[u]; to[edges] = v; hd[u] = edges++;
} int size[maxn]; void dfs1(int u)
{
size[u] = ; for (int i = hd[u]; ~i; i = nt[i])
dfs1(to[i]), size[u] += size[to[i]];
} double p[maxn]; void dfs2(int u)
{
for (int i = hd[u]; ~i; i = nt[i])
dfs2(to[i]); if (u != )
p[u] = (double)size[u] / (size[fa[u]] - );
} double f[maxn]; void dfs3(int u)
{
for (int i = hd[u]; ~i; i = nt[i])
dfs3(to[i]); using namespace std; for (int i = hd[u]; ~i; i = nt[i])
f[u] = max(f[u], min(p[to[i]], f[to[i]])); if (size[u] == )
f[u] = 1.0;
} signed main(void)
{
n = get_i();
m = get_i(); memset(hd, -, sizeof(hd)); for (int i = ; i <= n; ++i)
fa[i] = get_i(), add(fa[i], i); dfs1(); dfs2(); dfs3(); /*
for (int i = 1; i <= n; ++i)
printf("%f ", p[i]);
puts(""); for (int i = 1; i <= n; ++i)
printf("%f ", f[i]);
puts(""); for (int i = 1; i <= n; ++i)
printf("%d ", size[i]);
puts("");
*/ double ans = ; for (int i = ; i <= n; ++i)
if (size[i] > m)ans = std::max(ans, f[i]); printf("%f\n", ans);
}
@Author: YouSiki
BZOJ 4726: [POI2017]Sabota?的更多相关文章
- BZOJ 4726: [POI2017]Sabota? 树形dp
4726: [POI2017]Sabota? 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4726 Description 某个公司有n ...
- BZOJ 4726 [POI2017]Sabota?:树形dp
传送门 题意 某个公司有 $ n $ 个人,上下级关系构成了一个有根树.其中有个人是叛徒(这个人不知道是谁).对于一个人, 如果他下属(直接或者间接, 不包括他自己)中叛徒占的比例超过 $ x $ , ...
- BZOJ 4726 POI 2017 Sabota? 树形DP
4726: [POI2017]Sabota? Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 128 Solved ...
- BZOJ_4726_[POI2017]Sabota?_树形DP
BZOJ_4726_[POI2017]Sabota?_树形DP Description 某个公司有n个人, 上下级关系构成了一个有根树.其中有个人是叛徒(这个人不知道是谁).对于一个人, 如果他 下属 ...
- [POI2017]Sabotaż
[POI2017]Sabotaż 题目大意: 一棵\(n(n\le5\times10^5)\)个结点的树,初始时有一个未知的黑点,其余全为白点.对于一个点,如果其子树中黑点所占比例超过\(x\),则这 ...
- 【BZOJ4726】[POI2017]Sabota? 树形DP
[BZOJ4726][POI2017]Sabota? Description 某个公司有n个人, 上下级关系构成了一个有根树.其中有个人是叛徒(这个人不知道是谁).对于一个人, 如果他 下属(直接或者 ...
- P5958 【[POI2017]Sabotaż】
P5958 [[POI2017]Sabotaż] 题意描述 在一棵以1号节点为根节点的树上,有很多纯洁的白点, BUT,突然有一个黑点出现(可能在任意位置) 它要染黑尽可能多的节点,而在一棵子树中, ...
- BZOJ 4727: [POI2017]Turysta
4727: [POI2017]Turysta Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 117 Solved ...
- bzoj 4725 [POI2017]Reprezentacje ró?nicowe 暴力
[POI2017]Reprezentacje ró?nicowe Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 141 Solved: 67[Sub ...
随机推荐
- java web学习总结(二十四) -------------------Servlet文件上传和下载的实现
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
- C#计算代码行数
class Program { static void Main(string[] args) { int totalLineCount = 0; string directory; if(args. ...
- JavaScript 中的变量命名方法
三种命名方法 在程序语言中,通常使用的变量命名方法有三种:骆驼命名法(CamelCase),帕斯卡命名法(PascalCase)和匈牙利命名法. 依靠单词的大小写拼写复合词的做法,叫做"骆驼 ...
- iOS通知的整理笔记
iOS通知用于高耦合界面的传值确实方便快捷. 需要实现模态弹出的视图控制器上,有一个视图控制器可以导航.这必定要将这个视图控制器的导航视图控制器naVC.view添加到模态弹出的视图控制器presen ...
- Mac电脑如何读取Android手机上的文件
问题 一般Android手机用usb数据线连接到windows操作系统的电脑上后,会自动将手机存储卡以移动存储的方式显示在电脑里. 但是如果操作系统是Mac的,就没有这个存储设备.问题来了,Mac电脑 ...
- 无刷新读取数据库 (ajax)
<html> <head> <script type="text/javascript"> function loadXMLDoc() { va ...
- paramiko 的使用
paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于远程连接机器执行基本命令,也可以执行shell脚本 基于用户名密码连接: def ssh_connect ...
- MySQL多实例安装
1.安装MySQL需要的依赖的包和编译软件 (1)安装MySQL需要的依赖包 安装MySQL之前,最好先安装MySQL需要的依赖包,不然后面会出现报错,还得回来安装MySQL的依赖包. [root ...
- 萌新笔记——Cardinality Estimation算法学习(一)(了解基数计算的基本概念及回顾求字符串中不重复元素的个数的问题)
最近在菜鸟教程上自学redis.看到Redis HyperLogLog的时候,对"基数"以及其它一些没接触过(或者是忘了)的东西产生了好奇. 于是就去搜了"HyperLo ...
- android EditText 默认情况下不获取焦点(不弹出输入框)
可以在EditText前面放置一个看不到的LinearLayout,让它率先获取焦点: <LinearLayout android:focusable="true" andr ...