#include<bits/stdc++.h> using namespace std; const int N=2000+3; double f[N][2*N]; double g[N][2*N]; struct node{ int x,int y; bool friend operator <(node a,node b){ return a.y<b.y; } }a[N]; int n,m; double ans=0.0; double sum[N]; int main() { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++){ scanf("%d%d",&a[i].x,&a[i].y); } for(int i=)//处理后缀期望和 sort(a+1,a+n+1); g[0][0]=1.0; f[0][0]=0.0; for(int i=1;i<=n;i++){ for(int j=i;j<=2*n;j++){ if(j>=2) f[i][j]=g[i-1][j-2]*((double)a[i].y/((double)a[i].x+(double)a[i].y))*(f[i-1][j-2]+((double)1000-(double)a[i].x)/((double)a[i].x+(double)a[i].y))+ g[i-1][j-1]*((double)a[i].x/((double)a[i].x+(double)a[i].y))*(f[i-1][j-1]+((double)1000-(double)a[i].y)/((double)a[i].x+(double)a[i].y)) else f[i][j]=g[i-1][j-1]*((double)a[i].x/((double)a[i].x+(double)a[i].y))*(f[i-1][j-1]+((double)1000-(double)a[i].y)/((double)a[i].x+(double)a[i].y)); if(j>=2) g[i][j]=g[i-1][j-2]*((double)a[i].y/((double)a[i].x+(double)a[i].y))+g[i-1][j-1]*((double)a[i].x/((double)a[i].x+(double)a[i].y)); else g[i][j]=g[i-1][j-1]*((double)a[i].x/((double)a[i].x+(double)a[i].y)); if()//如果后面必须选择2个 } } }
闯关游戏
猜你喜欢
转载自www.cnblogs.com/Miracevin/p/9556060.html
今日推荐
周排行