[杂题]URAL1822. Hugo II's War
2015-03-16 00:29
120 查看
看懂题意的请直接跳过下一坨! 本人有表达障碍!
==========================================
题意: (题意真的很难很难懂啊!!! 去他娘的**)
有一个王国,王国里有一个国王(编号为1),他有(编号为2~n) n-1个臣子(这些臣子并不全和他有直接关系)
然后呢 国王要去打架,但是只有当他的x%个及以上的直系下属(与他有直接关系的臣子)做好打架的准备了,他才能去打架
他的直系下属也有下属,也要其中x%及以上的下属做好打架准备了,那些直系下属才会开始准备打架...直到最后一层下属(也就是没有下属的那些人)他们会直接开始准备打架
当然 (除了国王)所有臣子准备打架都需要时间$t_i$;
有一个上限时间T 臣子们准备的总时间不能超过T
给的是n(包括国王 共n个人(国王加臣子)),T
接下来是编号2~n的臣子们的信息(1号是国王) $p_i$和$t_i$
$p_i$代表该臣子是 编号为pi的人 的下属
$t_i$代表该臣子 准备打架需要的时间
问的是: 不超过T的情况下,准备战斗的臣子要尽量多,求x的最大值
是不是看了这么大一坨还是不知道讲什么...
那么我们来看个案例:
URAL 1822
==========================================
题意: (题意真的很难很难懂啊!!! 去他娘的**)
有一个王国,王国里有一个国王(编号为1),他有(编号为2~n) n-1个臣子(这些臣子并不全和他有直接关系)
然后呢 国王要去打架,但是只有当他的x%个及以上的直系下属(与他有直接关系的臣子)做好打架的准备了,他才能去打架
他的直系下属也有下属,也要其中x%及以上的下属做好打架准备了,那些直系下属才会开始准备打架...直到最后一层下属(也就是没有下属的那些人)他们会直接开始准备打架
当然 (除了国王)所有臣子准备打架都需要时间$t_i$;
有一个上限时间T 臣子们准备的总时间不能超过T
给的是n(包括国王 共n个人(国王加臣子)),T
接下来是编号2~n的臣子们的信息(1号是国王) $p_i$和$t_i$
$p_i$代表该臣子是 编号为pi的人 的下属
$t_i$代表该臣子 准备打架需要的时间
问的是: 不超过T的情况下,准备战斗的臣子要尽量多,求x的最大值
是不是看了这么大一坨还是不知道讲什么...
那么我们来看个案例:
6 3 1 2 2 2 2 1 1 2 1 4 n=6 T=3 就是1个国王 5个臣子 臣子们要在3单位时间内准备好打架 接着
2号:1 2 3号:2 2 4号:2 1 5号:1 2 6号:1 4 他们的关系图是这样的:
#include <bits/stdc++.h> using namespace std; typedef long long LL; const double eps=1e-4; vector<LL> son[10005], tmp, tot; int a[10005]; LL sum[10005]; int main() { int n, t; scanf("%d%d", &n, &t); for(int i=2;i<=n;i++) { int x; scanf("%d%d",&x,&a[i]); son[x].push_back(i); } a[1]=0; double l=0, r=100, ans; while(fabs(l-r)>=eps) { double m=(l+r)/2.0; memset(sum, -1, sizeof(sum)); tmp.clear(); tmp.push_back(1); while(!tmp.empty()) { int p=tmp[tmp.size()-1]; if(!son[p].size()) sum[p]=a[p], tmp.pop_back(); else { if(sum[son[p][0]]==-1) { for(int i=0;i<son[p].size();i++) tmp.push_back(son[p][i]); continue; } tot.clear(); for(int i=0;i<son[p].size();i++) tot.push_back(sum[son[p][i]]); sort(tot.begin(), tot.end()); int pp; for(int i=0;i<son[p].size();i++) if((i+1)*100.0/son[p].size()>=m) { pp=i; break; } sum[p]=tot[pp]+(LL)a[p]; tmp.pop_back(); } } if(sum[1]<=t) ans=m, l=m; else r=m; } printf("%.7lf\n", ans); return 0; }
URAL 1822
相关文章推荐
- URAL 1822. Hugo II's War 树的结构+二分
- URAL 1822. Hugo II's War 树的结构+二分
- ural==acm==题目分类
- Ural 1001
- ural 1170 desert
- Ural 1260. A nudnik photographer
- ural 1029 Ministry
- ural 1056 Computer Net
- ural 1022. Genealogical Tree
- [解题报告]Ural 1011 Conductors
- Ural 1025 Democracy in Danger 解题报告
- URAL 1210 Kind Spirits
- URAL 1192. Ball in a Dream
- URAL 1136 Parliament [DFS树型转换]
- Ural_1073. Square Country(DP)
- Ural_1215. Exactness of Projectile Hit
- ural 1119. Metro
- ural 1081. Binary Lexicographic Sequence
- ural 1846. GCD 2010
- 计算几何 ural 1793Tray 2