codeforces #428 Div.2 C
来源:互联网 发布:什么是大数据开发 编辑:程序博客网 时间:2024/06/02 03:07
原题链接:
codeforces #428 C
大意:
给出一棵树,从根节点 1 开始走,而且不往回走,直到走到叶子。走的过程中去下一个城市的城市概率相同,城市之间路径长为 1 ,求到所有叶子的所有路径的数学期望。
思路:
建树,DFS跑一遍,记录路径长度与概率即可。
一开始没有 get 到概率,WA 了才发现。老实说不 WA 的话,根本没想到要考虑到概率,英文题害人…
PS.这竟然是第一次做数学期望的题,以前遇到好像没有正经去做
代码实现:
#include <bits/stdc++.h>using namespace std;typedef long long ll;#define mem(s,t) memset(s,t,sizeof(s))#define D(v) cout<<#v<<" "<<v<<endl#define inf 0x3f3f3f3f#define pb push_back//#define LOCALinline void read(int &x){ x=0;char p=getchar(); while(!(p<='9'&&p>='0'))p=getchar(); while(p<='9'&&p>='0')x*=10,x+=p-48,p=getchar();}vector<int> f[100010];double ac[100010];//记录概率ll ans[100010];void dfs(int x,int ret,int last){ for(int i=0;i<f[x].size();i++){ int y=f[x][i]; if(last==y) continue; int SZ=f[x].size(); ac[y]=ac[x]*1.0/max(SZ-1,1);//计算概率 if(f[y].size()==1){ ans[y]=ret;//记录值 } dfs(y,ret+1,x); } return ;}int main() { int n; read(n); mem(ans,0); for(int i=1;i<=n;i++) ac[i]=1.0; if(n==1){ puts("0"); return 0; } //build graph for(int i=0;i<n-1;i++){ int x,y; read(x);read(y); f[x].pb(y); f[y].pb(x); } //solve dfs(1,1,1); double Ans=0; double B=0;//分母 for(int i=1;i<=n;i++){ if(ans[i]){ Ans+=(ans[i]*ac[i]); B+=ac[i]; } } printf("%.7lf\n",Ans*1.0/B); return 0;}
阅读全文
0 0
- codeforces #428 Div.2 C
- Codeforces #428 (Div. 2) C. Journey (DFS
- Codeforces Round #428 (Div 2) C
- Codeforces Round #428 (Div. 2)C
- codeforces #354(div 2) C
- codeforces #398(div.2)C
- 【codeforces】Codeforces Round #370 (Div. 2) C
- Codeforces Round #428 (Div. 2) C. Journey(dfs deep
- Codeforces Round #428 (Div. 2) A B C D
- Codeforces Round #428 (Div. 2) C. Journey(dfs)
- Codeforces Round #428 (Div. 2)-搜索&期望&细节-C. Journey
- CF——Codeforces Round #428 (Div. 2)C. Journey
- Codeforces Round #428 (Div. 2) A B C
- CodeForces-540C//Codeforces Round #301 (Div. 2)C BFS
- Codeforces Round #105 (Div. 2) C
- Codeforces Round 134 div 2 C题
- Codeforces Round #137 (Div. 2), problem: (C)
- Codeforces Round #153 (Div. 2) C题
- RH134-第二十三节-DNS高速缓存
- java class文件结构
- 做项目遇到的java弹框1
- FTPrep, 35 Search Insert Position
- c++入门教程(八)
- codeforces #428 Div.2 C
- MyBatis+Oracle实现主键自增长的几种常用方式
- nohup不起作用?
- 玩免费亚马逊云服务器中遇到的坑
- CodeForces
- Windows 小技巧——环境变量设置
- jspm的基本使用
- 浮点数的操作问题
- React Native 在Windows下的环境安装