1 条题解

  • 0
    @ 2022-11-24 10:33:00

    #include<iostream>
    #include<iomanip>
    int n,cnt[1<<20];
    double qwq[1<<20],ans;
    using namespace std;
    int main(){
    	cin>>n;
    	n=1<<n;
    	for(int i=0;i<n;i++){
    	    cin>>qwq[i],cnt[i]=cnt[i>>1]+(i&1);
    	}
    	for(int i=1;i<n;i<<=1){
    	    int awa=i<<1;
    		for(int j=0;j<n;j+=awa)
    			for(int k=0;k<i;k++)
    				qwq[i+j+k]+=qwq[j+k];
    	}
    	for(int i=1;i<n;i++)
    	    if(1-qwq[(n-1)^i]>1e-10){
    	        int d;
    	        if(cnt[i]&1) d=1;
    	        else d=-1;
    	        ans+=d/(1-qwq[(n-1)^i]);
    	    }
    	if(ans<1e-10) cout<<"INF";
    	else cout<<fixed<<setprecision(10)<<ans<<endl;
    	return 0;
    }
    
    • 1

    信息

    ID
    193
    时间
    1000ms
    内存
    125MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者