博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
J - Joyful -数学期望
阅读量:7065 次
发布时间:2019-06-28

本文共 1286 字,大约阅读时间需要 4 分钟。

 

 

题意:给你一个n*m的矩形,每次你可以其中挑选任意两个点作为一个矩形的对角,然后将矩形区域染色,现在告诉你要操作k次,求矩形中有多少个小方格被染色的期望值。

做法:线性期望?E(X+Y)=E(X)+E(Y),我们将问题转化为每个小方格被染色的期望值,然后累加就是总的期望值,对于求每个小方格被染色的期望值我们可以求它被染色的概率p,反向求它不被染色的概率会很容易,可知对于一个小方格总次数是m*m*n*n,不被染色的区域就是两个点都在小方格的上,下,左,右,然后对于四个角会多算一次,最后减一下。

注意事项!!!!:在写代码时,要时刻注意对于int计算时,避免溢出要先强转(long long),时刻注意int计算结果转化double时要在计算前加1.0*或1.0+使它先变成浮点数在运算。

#include
using namespace std;#define LL long longint main(){ int t,n,m,k; scanf("%d",&t); for(int it=1; it<=t; it++) { scanf("%d%d%d",&n,&m,&k); LL sum=(LL)n*n*m*m; double ans=0; LL cnt=0; for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) { cnt=0; cnt+=(LL)(i-1)*(i-1)*m*m; cnt+=(LL)(n-i)*(n-i)*m*m; cnt+=(LL)(j-1)*(j-1)*n*n; cnt+=(LL)(m-j)*(m-j)*n*n; cnt-=(LL)(i-1)*(i-1)*(j-1)*(j-1); cnt-=(LL)(i-1)*(i-1)*(m-j)*(m-j); cnt-=(LL)(n-i)*(n-i)*(j-1)*(j-1); cnt-=(LL)(n-i)*(n-i)*(m-j)*(m-j); double temp=1.0*cnt/sum; ans+=1.0-pow(temp,k); }// printf("%lf\n",ans); printf("Case #%d: %d\n",it,(int)(ans+0.5)); }}

 

转载于:https://www.cnblogs.com/dongdong25800/p/10811768.html

你可能感兴趣的文章
使用sqlite保存数据返回主键
查看>>
js循环生成多个easyui datagrid数据网格时,初始化表格
查看>>
Python编程笔记(第三篇)【补充】三元运算、文件处理、检测文件编码、递归、斐波那契数列、名称空间、作用域、生成器...
查看>>
获取用户信息
查看>>
洛谷P3952 时间复杂度
查看>>
Leetcode | Parentheses 相关
查看>>
Ajax分页问题
查看>>
如何禁止内部viewPager滑动
查看>>
简单的转义字符
查看>>
RabbitMQ入门-Topic模式
查看>>
poj 2777 Count Color(线段树区间更新)
查看>>
Java数据结构与算法(5) - ch05链表(LinkList)
查看>>
CLR Via CSharp读书笔记(21):自动内存管理(垃圾回收)
查看>>
刚刚接触python的感想
查看>>
modelsim使用常见问题及解决办法集锦 ②
查看>>
常用的第三方库
查看>>
java 操作elasticsearch之搭建测试项目环境
查看>>
iOS-图文表并茂,手把手教你GCD
查看>>
python之logging模块
查看>>
让Android Studio支持系统签名
查看>>