FOJ-2257 Saya的小熊饼干
来源:互联网 发布:js正则表达式判断字母 编辑:程序博客网 时间:2024/04/18 03:52
Saya最近喜欢上了小熊饼干,但是他有非常严重的选择困难症,当然面对这一堆小熊饼干的时候,想起了一句至理名言“犹豫不决么? 那就来RAND()一下吧!”。
于是,Saya把小熊饼干排成了一个N*M的矩阵,每个位置上都放着一块小熊饼干。每当他想吃小熊饼干的时候,他就运行一下代码。(random()为生成一个任意正整数)。
x1=random() mod N+1;
y1=random() mod M+1;
x2=random() mod N+1;
y2=random() mod M+1;
然后将以(x1, y1),(x2, y2)为两个顶点的,四条边平行于边界的一个子矩形内的小熊饼干全部吃掉(两个点的连线为矩形的对角线,如果x1=x2或者y1=y2,则认为矩形的长度或宽度为1)。显然,如果某个位置上的小熊饼干已经被吃掉了,那Saya就什么都吃不到了。
在这题中,我们假定random()函数非常完美,得到每个格子的概率相等。
请你帮忙算一算,K次之内她期望可以吃到块小熊饼干?
包含多组测试数据。
一行内包括三个正整数K,N,M。
0≤K≤10000,1≤N,M≤1000
一个整数,K次之内期望可以吃到的小熊饼干块数(四舍五入精确到整数)。
1 3 3
4
对于样例简单的解释是这样的:在3*3的格子里取子矩形,取到1*1的方案数为9,取到1*2或2*1的方案数为24,取到1*3或3*1的方案数为12,取到2*2的方案数为16,取到2*3或3*2的方案数为16,取到3*3的方案数为4结果约为(1*9+2*24+3*12+4*16+6*16+9*4) / (9*9) = 3.5679,四舍五入后得4。
PS:最后Saya直接令x1=1,y1=1,x2=n,y2=m。
这道题呢其实说难不难说简单也不简单(虽然说我做了很久),重要的就是它的思想---正着做不行就反着做,先求出每个点不被抽到的概率,然后再用1-概率,并全部加起来。
#include<iostream>#include<cmath>#include<algorithm>using namespace std;double count(double a,double b){ return 1-((a-1)*(a-1)+(b-a)*(b-a))/b/b;}int main(){int k,n,m;while(scanf("%d%d%d",&k,&n,&m)!=EOF){ double ans=0;for( int i=1;i<=n;i++){for( int j=1;j<=m;j++){ double t1=count(i,n)*count(j,m);//概率的计算公式(一次抽不到)ans+=(1-pow(1-t1,k));连续k次抽不到的概率为一次抽不到的k次方,并把1-那个概率(这个位置的期望值)加上,}}printf("%.0f\n",ans);}return 1;}
- FOJ-2257 Saya的小熊饼干
- 一起吃饼干的幸福
- 哭泣的小熊
- 转小熊的日志
- 向往梦想的小熊
- 有好吃的!自己动手做Sierpinski饼干
- Bila saya menulis k
- Tyvj 1607 小熊的早餐
- 【勤劳的小熊】解题报告
- FOJ 1404 Andy的作业
- FOJ 1550 猪的分数
- FOJ 1476 矩形的个数
- FOJ 1402 猪的安家
- FOJ 1404 Andy 的作业
- 【FOJ 1059】老师的苦恼
- foj 2191 完美的数字
- FOJ-1058-粗心的物理学家
- leetcode_455. Assign Cookies 分配饼干,java数组的排序
- css阴影
- SpannableString的使用
- 5js的输出内容
- Java中打印出来完全相同的两个字符串,用equals方法比较返回的却是false的原因
- 一个匹配URL的正则表达式例子(带详细解释)
- FOJ-2257 Saya的小熊饼干
- leetcode[Assign Cookies]
- ZOJ
- 彻底理解android中的内部存储与外部存储
- CSU
- 设计模式-工厂方法模式
- HDOJ-2010 水仙花数
- npm resource busy or locked解决方法
- redis-启动