hdu 5425 Rikka with Tree II
2015-09-03 22:37
337 查看
题解:
1.因为只需要保存小数点后6位,所以并不需要把1e5这么大的数全部枚举出来
2.double的表示长度也只有2 ^ 1000,所以不能直接把2 ^ 100000算出来,要提前约分
3.double的精度为15–16位,作为常识可以顺便记下来
4.最多需要枚举最大的100个数,因为10e5 * 10e5 * 10e5 / 2 ^ 100 约= 1 / 1e15,几乎再小的数枚举也对结果造成不了影响
总结:
1.虽然解题的时候讲究弱化或者加强条件,但是如果实在想不出来的话,可以在重新考量某些忽略的条件,也许就是解题关键!
2.如果连WA几次,就必须不能再考虑这个题目了,放空自己,不纠结与细节,等过一段时间,回头再看这个题目的时候,就可以从宏观的思考这个问题了
1.因为只需要保存小数点后6位,所以并不需要把1e5这么大的数全部枚举出来
2.double的表示长度也只有2 ^ 1000,所以不能直接把2 ^ 100000算出来,要提前约分
3.double的精度为15–16位,作为常识可以顺便记下来
4.最多需要枚举最大的100个数,因为10e5 * 10e5 * 10e5 / 2 ^ 100 约= 1 / 1e15,几乎再小的数枚举也对结果造成不了影响
总结:
1.虽然解题的时候讲究弱化或者加强条件,但是如果实在想不出来的话,可以在重新考量某些忽略的条件,也许就是解题关键!
2.如果连WA几次,就必须不能再考虑这个题目了,放空自己,不纠结与细节,等过一段时间,回头再看这个题目的时候,就可以从宏观的思考这个问题了
#include<iostream> #include<cstring> #include<cstdio> #include<vector> #include<algorithm> #include<cmath> #include<queue> using namespace std; #define MAXN 100005 vector<int>vec[MAXN]; queue<int>q; int n,d[MAXN]; inline double f(double a,double b) { return a * b / (a + b); } double solve() { double ans = 0; for(int i = n - 1;i >= max(n - 100,0);i--) for(int j = n - 1;j > i;j--) ans += f(d[i],d[j]) / (pow(2.0,n - i) - (n + 1) / pow(2.0,i)); return ans; } int main() { while(scanf("%d",&n) != EOF) { for(int i = 0;i <= n;i++)vec[i].clear(); for(int i = 1;i < n;i++) { int u; scanf("%d",&u); vec[u - 1].push_back(i); } d[0] = 1; q.push(0); while(!q.empty()) { int u = q.front(); q.pop(); for(int i = 0;i < vec[u].size();i++) { int v = vec[u][i]; d[v] = d[u] + 1; q.push(v); } } sort(d,d + n); double ans = solve(); printf("%.6f\n",ans); } }
相关文章推荐
- Unity热更新专题(一)热更新简介
- Json判断是否存在某个属性和遍历各个属性和值
- 如何高效学习
- C# 股票 蜡烛图 显示
- c++primer之类(类的静态成员)
- 关于redis的python客户端程序
- git did not exit cleanly
- [题解+总结]20150903
- LightOJ 1427 -Repository(ac自动机)
- Codeforces 567E President and Roads 【最短路】
- jQuery基础学习6——基本选择器
- Condition
- Maven:基本命令 / Demo
- HDU 5336 Segment Game
- Android抽象布局——include、merge 、ViewStub
- hdoj 2087 剪花布条 【kmp(变形题)】
- ZFS Architecture Description
- 谱聚类的增量更新原理
- npm的使用技巧 (nodejs 的版本管理 及常用命令 )
- Android test---JUnit