[bzoj4726]Sabota
做的题太少,什么都要看题解..
题意只给出一个叛徒,则他一定是叶子结点(最坏情况下),那么“带头反叛”的点一定构成了一条链。
令f[u]表示u不带头反叛的最小值,则考虑它的每一支儿子v,(不反叛)f[v],(反叛)size[v]/(size[u]-1),这里取一个min。
因为是最坏情况,所以对所有儿子取max。
现在来考虑答案如何构造(这个我写完想了很久),对于std中ans=max(ans,f[u])的做法(size[u]>k),
先证必要性:显然,每一棵size大于K的子树,我们不能取满,ans至少要达到f[u]。
再证充分性:我们只是对每一棵size大于K的子树进行了询问。也许它们f[u]中的选择是不合法的,却不会影响答案;再者,最开始到达K的子树一定不能带头反叛,那么它就不需要再对上进行转移。所以严格来讲某题解的std还少了一句话【已经标记】,只是不知道为何能过。(也许不写也是正确的吧,牵扯到一堆不等式,反正我证不出来)
#include<cstdio>
#include<algorithm>
#define eps 1e-8
#define N 1000010
using namespace std;
int edgenum,n,K;
int vet[N],head[N],size[N],son[N],next[N];
double f[N];
;
void add(int u,int v){
edgenum++;vet[edgenum]=v;next[edgenum]=head[u];head[u]=edgenum;
}
void dfs(int u){
;son[u]=;
){
int v=vet[e];
dfs(v);
son[u]+=size[v];size[u]+=size[v];
e=next[e];
}
e=head[u];){
f[u]=1.0;
if(size[u]>K)ans=max(ans,f[u]);
return;
}
){
int v=vet[e];
if(size[v]>K){e=next[e];continue;}///////////That's it!
f[u]=max(f[u],min(f[v],)));
e=next[e];
}
if(size[u]>K){
ans=max(ans,f[u]);
}
}
int main()
{
scanf("%d%d",&n,&K);
;i<=n;i++){
int x;scanf("%d",&x);
add(x,i);
}
dfs();
printf("%.10lf",ans);
}
bzoj4726
[bzoj4726]Sabota的更多相关文章
- 【BZOJ4726】[POI2017]Sabota? 树形DP
[BZOJ4726][POI2017]Sabota? Description 某个公司有n个人, 上下级关系构成了一个有根树.其中有个人是叛徒(这个人不知道是谁).对于一个人, 如果他 下属(直接或者 ...
- 【BZOJ-4726】Sabota? 树形DP
4726: [POI2017]Sabota? Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 128 Solved ...
- bzoj4726【POI2017】Sabota?
首先可以推出来如果i没有带头叛变,那么i的父亲也一定不会带头叛变,证明显然 所以最劣情况初始的叛徒肯定是叶子,并且带头叛变的人一定是从某个叶子往上走一条链 f[i]表示i不带头叛变的话最小的x 那么我 ...
- 【POI2017||bzoj4726】Sabota?
上学期putsnan过了一次,这学期认真写了一遍…… #include<bits/stdc++.h> #define N 500010 using namespace std; ]; ,n ...
- 【树形dp】bzoj4726: [POI2017]Sabota?
找点概率期望的题做一做 Description 某个公司有n个人, 上下级关系构成了一个有根树.其中有个人是叛徒(这个人不知道是谁).对于一个人, 如果他 下属(直接或者间接, 不包括他自己)中叛徒占 ...
- BZOJ4726: [POI2017]Sabota?
$n \leq 500000$的树,开始有一个点是坏的,如果一个子树中坏点比例(不包括根节点)超过x那这整棵子树就会变坏,问最坏情况下不超过$K$个坏点的情况下$x$最小是多少. 被坑成傻逼.. 可以 ...
- [bzoj4726][POI2017][Sabota?] (树形dp)
Description 某个公司有n个人, 上下级关系构成了一个有根树.其中有个人是叛徒(这个人不知道是谁).对于一个人, 如果他 下属(直接或者间接, 不包括他自己)中叛徒占的比例超过x,那么这个人 ...
- BZOJ 4726: [POI2017]Sabota?
4726: [POI2017]Sabota? Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 301 Solved ...
- BZOJ 4726: [POI2017]Sabota? 树形dp
4726: [POI2017]Sabota? 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4726 Description 某个公司有n ...
随机推荐
- Subsonic使用中
使用中,遇到各种奇葩问题,依依汇总. 1.引用了Subsonic层后,一运行就开始报错,提示未能找到文件!! //引用后,目标框架可能会被改变,subsonic的默认框架是2.0,请检查框架是否 ...
- JSP的9大内置对象
1.概述 JSP的这9个内置对象,都是servlet API实例,即在JSP页面内部,可以直接使用; ps:顺便说下JSP的4大范围: JSP的四种范围,分别为page.request.session ...
- 有哪些经常被误用的 HTML、JavaScript、CSS 的元素、方法和属性?
一,以前想要把一个元素(input 之类的)设成只读的时候都是用 disabled,后来发现这是不对的. 因为在 HTML 里面,如果一个元素被设置成 disabled, 那么它的值就不会被发送到 s ...
- Linux C 收藏
某招聘要求:熟悉高性能分布式网络服务端设计开发,熟悉epoll.多线程.异步IO.事件驱动等服务端技术: <UNIX环境高级编程(第3版)>apue.h等源码文件的编译安装 <UNI ...
- php.h: No such file or directory
建立一个php的include路径到/usr/include的软连接就好了 ln -s /usr/include/php-zts/* /usr/include/
- GSM07.10协议中串口复用使用的校验算法
] = { 0x00, 0x91, 0xE3, 0x72, 0x07, 0x96, 0xE4, 0x75, 0x0E, 0x9F, 0xED, 0x7C, 0x09, 0x98, 0xEA, 0x7B ...
- vs2015全新nuget使用全析
随着vs2015正式版本的发布,实在按捺不住,安装体验了一把,感触最大的除了可以调试lamda以外莫过于对nuget的升级. 先来一张全景: 怎么样,风格完全不同了吧.可以显示预发行版本了,右上角那个 ...
- Sicily 1051: 魔板(BFS+排重)
相对1150题来说,这道题的N可能超过10,所以需要进行排重,即相同状态的魔板不要重复压倒队列里,这里我用map储存操作过的状态,也可以用康托编码来储存状态,这样时间缩短为0.03秒.关于康托展开可以 ...
- 共享MFC dULL
>------ 已启动生成: 项目: OSGtest, 配置: Debug Win32 ------1>正在编译...1>AddScene.cpp1>main.cpp1> ...
- json格式化工具
1.JsonViewer 可对json数据进行查看.格式化.编辑...... 2.在线工具 http://json.parser.online.fr/