BZOJ4726——[POI2017]Sabota?
来源:互联网 发布:qq主题下载软件 编辑:程序博客网 时间:2024/05/20 01:35
1、题意:某个公司有n个人, 上下级关系构成了一个有根树。其中有个人是叛徒(这个人不知道是谁)。对于一个人, 如果他下属(直接或者间接, 不包括他自己)中叛徒占的比例超过x,那么这个人也会变成叛徒,并且他的所有下属都会变成叛徒。你要求出一个最小的x,使得最坏情况下,叛徒的个数不会超过k。
2、分析:不是很懂为什么这种水题没人做。。答案满足单调性。那就二分呗,接下来就是判断了,因为只有一个人最开始是叛徒。。判断的时候一棵子树里面最坏情况就是把所有子树去最大值,然后看是否比例超过x,xjb玩玩就行了,不知道正解是啥系列。
#include <map>#include <set>#include <cmath>#include <queue>#include <vector>#include <bitset>#include <string>#include <cstdio>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define M 500010#define LL long long#define MOD 1000000007#define inf 2147483647#define eps 1e-7#define llinf 4000000000000000000ll#define For(i, x, y) for(int i = (x); i < (y); i ++)#define rep(i, x, y) for(int i = (x); i <= (y); i ++)#define drep(i, x, y) for(int i = (x); i >= (y); i --)inline int read(){ char ch=getchar();int x=0,f=1; while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while('0'<=ch&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}inline LL llread(){ char ch=getchar();LL x=0,f=1; while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while('0'<=ch&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}vector<int> G[M];int n, k;int Size[M], fa[M], mx[M];inline void add(int x, int y){ G[x].push_back(y);}inline void get_size(){ rep(i, 1, n) Size[i] = 1; drep(i, n, 1) Size[fa[i]] += Size[i]; rep(i, 1, n) Size[i] --;}inline bool check(double x){ rep(i, 1, n) mx[i] = 0; drep(i, n, 1){ if(Size[i]) if(mx[i] / (double)Size[i] - x > eps) mx[i] = Size[i] + 1; mx[i] = max(mx[i], 1); mx[fa[i]] = max(mx[fa[i]], mx[i]); } if(mx[1] <= k) return true; return false;}int main(){ //freopen("0input.in", "r", stdin); n = read(), k = read(); rep(i, 2, n) add(fa[i] = read(), i); get_size();// rep(i, 1, n) printf("%d\n", Size[i]); double l = 0.0, r = 1.0, ans; while(abs(r - l) > eps){ double mid = (l + r) / 2.0; if(check(mid)) r = (ans = mid); else l = mid; } printf("%.9lf", ans); return 0;}
0 0
- BZOJ4726——[POI2017]Sabota?
- BZOJ4726: [POI2017]Sabota?
- bzoj4726 [POI2017]Sabota?
- BZOJ4726 [POI2017]Sabota?
- BZOJ4726: [POI2017]Sabota?
- [bzoj4726][POI2017]Sabota?
- bzoj4726 [POI2017]Sabota 二分+暴力
- BZOJ4726 [POI2017][Sabota?] 树形DP
- 【BZOJ4726】【树形期望DP】[POI2017]Sabota? 题解
- bzoj4726 [ POI2017 ] -- 树形DP
- 【BZOJ】4726 [POI2017] Sabota?
- BZOJ 4726 [POI2017] Sabota?
- 4726: [POI2017]Sabota?
- BZOJ 4726: [POI2017]Sabota?【树形dp
- BZOJ 4726 POI2017 Sabota? 树形DP
- bzoj 4726: [POI2017]Sabota? 树形dp
- [BZOJ]4726 [POI2017] Sabota? 树形Dp
- BZOJ4723——[POI2017]Flappy Bird
- pyqt4实例练习2
- [心得] uml各种符号的含义
- xcode 有时删除了不用的文件报错为 .h missing from working copy
- 运算符优先级
- 变态方法突破过滤UNION+SELECT继续注入
- BZOJ4726——[POI2017]Sabota?
- Android 缓存机制(三)
- Jquery Table 的基本操作
- IFE2015-task1-07
- 【面试题】什么是SQL注入式攻击?
- 使用jieba分词对中文文档进行分词|停用词去重
- NP完全问题的归约-碰撞集(HITTING SET)
- sharepoint 2013 安装office web apps 2013 with sp1时提示没有安装microsoft.net framework 4.5
- 6 接口、Lambda表达式和内部类