Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
34851 LYLAKIOI 【S】T2 C++ 通过 100 36 MS 27532 KB 1434 2024-11-19 14:41:32

Tests(10/10):


#include<bits/stdc++.h> #define up(i,l,r) for(int i=(l);i<=(r);++i) #define down(i,l,r) for(int i=(l);i>=(r);--i) #define pi pair<int,int> #define p1 first #define p2 second #define p_b push_back #define m_p make_pair #define auto pi typedef long long ll; using namespace std; const int maxn=2e6+10,mod=998244353; const double PI=acos(-1); inline ll read(){ ll x=0;short t=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch==-1)exit(0);if(ch=='-')t=-1;ch=getchar();} while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); return x*t; } int n,m;double p; double dp[1005][1005]; int son[maxn][2],siz[maxn],ct; void ins(string &s){ int u=0; for(char ch:s){ int op=ch-'0'; if(!son[u][op])son[u][op]=++ct; u=son[u][op],++siz[u]; } } void slv(){ n=read(),m=read();cin>>p;p=max(p,1-p); dp[0][0]=1; up(i,0,1000)up(j,0,1000){ if(i||j);else continue; if(i>=j)dp[i][j]=dp[i-1][j]*p+dp[i][j-1]*(1-p); else dp[i][j]=dp[i][j-1]*p+dp[i-1][j]*(1-p); } up(i,1,n){ string s;cin>>s;ins(s); } double res=1; up(i,0,ct)res=res*dp[siz[son[i][0]]][siz[son[i][1]]]; printf("%.10lf",res); } int main(){ //freopen("1.in","r",stdin),freopen("1.out","w",stdout); //while(1)slv(); //int t=read();while(t--)slv(); slv(); //cerr<<clock()*1.0/CLOCKS_PER_SEC<<"s\n"; return 0; }


测评信息: