提交时间:2024-05-08 14:28:34

运行 ID: 29440

#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 p_b push_back #define pi pair<int,int> #define p1 first #define p2 second #define m_p make_pair using namespace std; typedef long long ll; const int maxn=1e5+10; inline ll read(){ ll x=0;short t=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')t=-1;ch=getchar();} while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); return x*t; } int n,m; struct node { double p,e; }d[maxn]; bool operator<(node a,node b){ double fa=a.e+(1-a.p)*b.e; double fb=b.e+(1-b.p)*a.e; return fa<fb; } vector<double>S[maxn]; void slv(){ n=read(),m=read();up(i,1,n)up(j,1,m)S[j].p_b(read()/100.0); up(i,1,m){ sort(S[i].begin(),S[i].end()); d[i].p=1;for(auto x:S[i])d[i].e+=d[i].p,d[i].p*=x; }sort(d+1,d+m+1); double res=0,now=1; up(i,1,m)res+=d[i].e*now,now=now*(1-d[i].p); printf("%.5f",res); }int main(){ // freopen("a.in","r",stdin); // freopen("a.out","w",stdout); slv(); fclose(stdin); fclose(stdout); return 0; }