提交时间:2024-05-08 17:18:44
运行 ID: 29492
#include <bits/stdc++.h> #define DB double using namespace std; int N,M; DB p[305][305],clear[305],e[305]; int ord[305]; bool cmp(int i,int j) { return e[i]+(1-clear[i])*e[j]<e[j]+(1-clear[j])*e[i]; } int main() { scanf("%d %d",&N,&M); for(int i=1;i<=N;i++) { for(int j=1;j<=M;j++) { int perc; scanf("%d",&perc); p[j][i]=1.0*perc/100; } } for(int i=1;i<=M;i++) sort(p[i]+1,p[i]+N+1); for(int i=1;i<=M;i++) { clear[i]=1; for(int j=1;j<=N;j++) { e[i]+=clear[i]; clear[i]*=p[i][j]; } } for(int i=1;i<=M;i++) ord[i]=i; sort(ord+1,ord+M+1,cmp); DB cur=1,ans=0; for(int i=1;i<=M;i++) { ans+=e[ord[i]]*cur; cur*=(1-clear[ord[i]]); } printf("%.5lf\n",ans); return 0; }