zoukankan      html  css  js  c++  java
  • 笔记-CF643E Bear and Destroying Subtrees

    CF643E Bear and Destroying Subtrees


    (f_{i,j}) 表示节点 (i) 的子树深度为 (le j) 的概率,(ch_i) 表示 (i) 的儿子节点集合。

    (2^{-50}) 以下的值由于精度忽视。

    [f_{i,j}= egin{cases} frac{1}{2^{|ch_i|}}&(j=0)\ prod_{sin ch_i}frac{f_{s,j-1}+1}{2}&(j>0)\ end{cases} ]

    //Data
    const int N=5e5,D=50;
    int n,fa[N+7]; db f[N+7][D+7];
    void wen(int u){for(int i=0;i<=D;i++) f[u][i]=1;}
    
    //Main
    int main(){
    	int q=ri; wen(n=1);
    	for(int ti=1;ti<=q;ti++){
    		int o=ri,r=ri;
    		if(o==1){
    			int u=++n; wen(u),fa[u]=r;
    			vector<int> ve;
    			for(int v=u,d=0;v&&d<=D;v=fa[v],d++) ve.pb(v);
    			for(int v=sz(ve)-1;v>=1;v--)
    				for(int i=1;i<=D;i++) f[ve[v]][i]/=(f[ve[v-1]][i-1]+1)/2;
    			f[r][0]/=2;
    			for(int v=1;v<=sz(ve)-1;v++)
    				for(int i=1;i<=D;i++) f[ve[v]][i]*=(f[ve[v-1]][i-1]+1)/2;
    		} else {
    			db res=0;
    			for(int i=1;i<=D;i++) res+=(f[r][i]-f[r][i-1])*i;
    			printf("%.10lf
    ",res);
    		}
    	}
    	return 0;
    } 
    
    

    祝大家学习愉快!

  • 相关阅读:
    选择结构
    java交互Scanner类
    生成Javadoc文档
    Java变量命名规范
    java变量类型和常量类型
    Linux命令目录重点
    网络设置
    任务计划
    用户与权限
    yum安装软件
  • 原文地址:https://www.cnblogs.com/Wendigo/p/13031831.html
Copyright © 2011-2022 走看看