Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
29491 | baka24 | 【BJ】T1 | C++ | 通过 | 100 | 0 MS | 312 KB | 1158 | 2024-05-08 17:17:48 |
#include<bits/stdc++.h> using namespace std; #define int long long #define double long double #define pii pair<int,int> #define fr first #define sc second #define mk make_pair const int MAXN=310,N=20,inf=1000000000,Mod=1000000007; int read(){int x=0,f=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x*=10;x+=c-'0';c=getchar();}return x*f;} int n,m; struct node{ int p[N];double e,P; void geteP(){ P=1; for(int i=1;i<=n;i++){ e+=P; P*=1.0*p[i]/100; } } bool operator <(const node&G)const{ return G.e*(1.0-P)+e<e*(1.0-G.P)+G.e; } }a[MAXN]; void slv(){ n=read(),m=read(); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ a[j].p[i]=read(); } } for(int i=1;i<=m;i++){ sort(a[i].p+1,a[i].p+n+1); a[i].geteP(); } sort(a+1,a+m+1); double ans=0,sum=1; for(int i=1;i<=m;i++){ // cout<<a[i].P<<endl; ans+=a[i].e*sum; sum*=1-a[i].P; } printf("%.5Lf",ans); } signed main(){ slv(); return 0; }