[poj2151]Check the difficulty of problems概率dp

news/2024/7/23 23:54:06

解题关键:主要就是概率的推导以及至少的转化,至少的转化是需要有前提条件的。

转移方程:$dp[i][j][k] = dp[i][j - 1][k - 1]*p + dp[i][j - 1][k]*(1 - p)$ 其中$dp[i][j][k]$表示第$i$个人前j题恰好ac了$k$题.然后用前缀和处理一下最后的结果。

每队至少AC一题 反向考虑,用1-每队没A题的概率,再用乘法原理结合一下。

冠军队至少AC$n-1$题,也就是存在一支队伍AC数>=n-1,依然反向考虑,不过是在每队AC至少一题的条件下,从而求出每队AC数>=1,<n-1,再用前面的概率减去此概率即可。

复杂度:1000*30*30

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<cstdlib>
 5 #include<cmath>
 6 #include<iostream>
 7 using namespace std;
 8 typedef long long ll;
 9 double p[1002][32],dp[1002][32][32],s[1002][32];
10 int main(){
11     int m,t,n;
12     ios::sync_with_stdio(0);
13     while(cin>>m>>t>>n&&(n||m||t)){
14         for(int i=1;i<=t;i++){
15             for(int j=1;j<=m;j++){
16                 cin>>p[i][j];
17             }
18         }
19         
20         for(int i=1;i<=t;i++){
21             dp[i][0][0]=1;
22             for(int j=1;j<=m;j++){
23                 dp[i][j][0]=dp[i][j-1][0]*(1-p[i][j]);//类似杨辉三角的推法,注意按照怎样的顺序才能推出全部 
24             }
25         }
26         
27         for(int i=1;i<=t;i++){
28             for(int j=1;j<=m;j++){
29                 for(int k=1;k<=j;k++){//注意控制变量范围,保证有意义 
30                     dp[i][j][k]=dp[i][j-1][k-1]*p[i][j]+dp[i][j-1][k]*(1-p[i][j]);
31                 }
32             }
33         }
34         for(int i=1;i<=t;i++){
35             for(int j=0;j<=m;j++){
36                 s[i][j]=s[i][j-1]+dp[i][m][j];
37             }
38         }
39         
40         double ans1=1.0,ans2=1.0,t1;
41         for(int i=1;i<=t;i++)    t1=1-s[i][0],ans1*=t1;
42         for(int i=1;i<=t;i++)    t1=s[i][n-1]-s[i][0],ans2*=t1;
43         printf("%.3f\n",ans1-ans2);
44 
45         
46         
47     }
48 }

 

转载于:https://www.cnblogs.com/elpsycongroo/p/7451010.html


http://www.niftyadmin.cn/n/1487154.html

相关文章

editor.md+springmvc怎么上传本地图片_手写SpringMVC实战,一切从Spring底层源码分析开始...

Spring框架对于Java后端程序员来说再熟悉不过了&#xff0c;以前只知道它用的反射实现的&#xff0c;但了解之后才知道有很多巧妙的设计在里面。如果不看Spring的源码&#xff0c;你将会失去一次和大师学习的机会&#xff1a;它的代码规范&#xff0c;设计思想很值得学习。我们…

奥运开幕式上的Windows蓝屏新照

我们已经知道&#xff0c;鸟巢的灯光和投影显示系统使用了上百台Windows XP Embedded系统的服务器产品&#xff0c;而在开幕式主火炬点火的关键时刻&#xff0c;其中一台投影服务器正巧出现了蓝屏。如果之前的照片还不足以显出此次蓝屏的尴尬程度的话&#xff0c;下面这张照片应…

python tk 图片自适应控件大小

部分代码如下 from PIL import Image, ImageTkself.img Image.open("3.png")self.img self.img.resize((550, 160), Image.ANTIALIAS)self.img ImageTk.PhotoImage(self.img)self.imgLabel tk.Label(root, imageself.img)self.imgLabel.place(relx0.113, rely0.…

CentOS安装glibc-2.14(转)

到http://ftp.gnu.org/gnu/glibc/下载glibc-2.14.tar.xz tar glibc-2.14.tar.gz cd glibc-2.14 mkdir build cd build ../configure --prefix/usr/local/glibc-2.14 make -j4 su xxxx make install 看看现在libc.so.6在哪个位置&#xff0c;然后修改软链接 ln -s /usr/local/gl…

java.io.StreamCorruptedException: invalid type code: AC

解决方法&#xff0c;没次用完ObjectInputStream或ObjectInputStream都得重新new 报错代码如下Runnable 是java 的线程接口 class SocketClient implements Runnable {public Socket s null;public ObjectInputStream ois null;public ObjectOutputStream oos null;public…

jquery - 2

1.操作内容和属性 //获取内容 $(selector).html();//设置或者返回所选元素的内容&#xff0c;包括标签 $(selector).text();//设置或者返回所选元素的文本内容。 $(selector).val();//设置或者返回表单字段的值。 //获取属性 $(selector).attr(attr&#xff0c;value|callback(…

mybatis进行分页,使用limit,不能用#号,不能用预编译

解决方案&#xff0c;LIMIT其实可以用#号&#xff0c;也可以用预编译&#xff0c;只不过在mapper层里 参数要提前转换成Long类型 错误示范 参数用了String&#xff0c;所以xml文件只能用$而不能用# public interface UserMapper extends BaseMapper<User> {//参数用了S…

bootstrap-侧边菜单_设计灵感|超好看的30款网站侧边栏设计

网站的布局和导航十分重要&#xff0c;想要兼顾美观简洁的设计又要保障友好的用户体验&#xff0c;使用侧边栏导航会是一种不错的选择。目前&#xff0c;已经有大量的网站摈弃了传统的导航模式&#xff0c;改为使用侧边栏导航&#xff0c;今天小摹精选了其中的30个作为灵感案例…