好题,这题可以分开算每个技能的贡献

orz popoqqq http://blog.csdn.net/popoqqq/article/details/45365759

 1 var f,w:array[0..510,0..510] of double;
 2     p:array[0..510] of double;
 3     d:array[0..510] of longint;
 4     t,i,j,n,m:longint;
 5     ans:double;
 6 
 7 begin
 8   readln(t);
 9   while t>0 do
10   begin
11     dec(t);
12     readln(n,m);
13     fillchar(f,sizeof(f),0);
14     for i:=1 to n do
15       readln(p[i],d[i]);
16     ans:=0;
17     for i:=1 to n do
18     begin
19       w[i,0]:=1;
20       for j:=1 to m do
21         w[i,j]:=w[i,j-1]*(1-p[i]);
22     end;
23     f[0,m]:=1;
24     for i:=0 to n-1 do
25       for j:=0 to m do
26       begin
27         f[i+1,j]:=f[i+1,j]+f[i,j]*w[i+1,j];
28         if j>0 then
29         begin
30           f[i+1,j-1]:=f[i+1,j-1]+f[i,j]*(1-w[i+1,j]);
31           ans:=ans+f[i,j]*(1-w[i+1,j])*d[i+1];
32         end;
33       end;
34     writeln(ans:0:10);
35   end;
36 end.
View Code

 

posted on 2015-05-18 09:52  acphile  阅读(174)  评论(0编辑  收藏  举报