Candy UVA - 1639

原创 2018年04月17日 14:34:50
#include<cstring>
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;

const int maxn=2e5+10;
long double Fi[2*maxn];
/*
log==ln
log10==lg

为了防止精度损耗的太厉害,用log(即ln),来保存,要不然也存不下,
然后再用exp(),算出原来的值,很巧妙 
但是注意要用long double,要不然的话,精度损失太多

由于double 占8字节,long double 占12字节,故long double精度更高,有时用的上。
定义: long double  a ;
输入: scanf("%Lf" , &a) ;
输出:   printf("%.10Lf" , a) ;
常用函数都要在末尾加个 “l”,   如fabsl(a) , sqrtl(a) , cosl(a) , ............ 
*/

void init(){
	for(int i=1;i<maxn*2;i++){
		Fi[i]=Fi[i-1]+log(i);//阶乘取ln	
	}
}

long double lnc(int n,int m){
	return Fi[n]-Fi[m]-Fi[n-m];
}

int main(){
	init();
	int n;double p;
	int kase=1;
	while(scanf("%d %lf",&n,&p)==2){
		long double ans=0.0;
		for(int i=1;i<=n;i++){
			long double ans1=lnc(2*n-i,n)+(n+1)*log(1-p)+(n-i)*log(p);
			long double ans2=lnc(2*n-i,n)+(n+1)*log(p)+(n-i)*log(1-p);
			ans+=(double)i*(exp(ans1)+exp(ans2));
		}
		printf("Case %d: %.10Lf\n",kase++,ans);
	}
	return 0;
}

版权声明:小白一个,欢迎各位指错。 https://blog.csdn.net/qq_36424540/article/details/79974504

uva1639 Candy 数学期望 对数处理精度

1639 Candy LazyChild is a lazy child who likes candy very much. Despite being very young, he ha...
  • hnust_taoshiqian
  • hnust_taoshiqian
  • 2015-06-02 17:18:50
  • 583

例题10-17 糖果 UVa1639

1.题目描述:点击打开链接 2.解题思路:根据题意,不妨设最后打开第一个盒子,此时第二个盒子还有i颗糖果,因此这之前一共打开了n+(n-i)次盒子,其中n次取盒子1,n-i次取盒子2,取法一共有C(...
  • u014800748
  • u014800748
  • 2015-02-26 15:47:40
  • 701

UVa1639 - Candy(期望+对数精度处理)

注意题意是开始两个盒子各有n个糖果,等吃完就只有两种情况,盒子1没了,或者盒子2没了。 这完全是个求概率期望的数学问题。借用二项分布公式: P(ξ=K)= C(n,k) * p^k * (1-p)...
  • a197p
  • a197p
  • 2015-05-08 08:35:07
  • 870

UVA 1639(p333)----Candy

#include #include #include using namespace std; const int maxn=200000; long double l[2*maxn+50]; int...
  • wang2147483647
  • wang2147483647
  • 2016-02-26 13:52:20
  • 210

UVa 1639 Candy

题目http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=51200题解 主要想记录一下一个小技巧。 若p^a* k^b,a...
  • QWsin
  • QWsin
  • 2016-07-08 21:01:14
  • 283

UVALive 5791 Candy's Candy 解题报告

题目 题意: 有f种口味的糖果,现在要把每颗糖果分到一些packs里面去。packs分两种: flavored pack:只有一种口味。 variety pack:每种口味都有。 求满足下列要求的分法...
  • u010638776
  • u010638776
  • 2013-09-01 20:44:32
  • 883

UVA - 1639 Candy——期望+log处理精度

根据题意,不妨设最后打开第一个盒子,此时第二个盒子还有i颗糖果,因此这之前一共打开了n+(n-i)次盒子,其中n次取盒子1,n-i次取盒子2,取法一共有C(2*n-i,n)种,因此盒子2还剩i颗糖果时...
  • hao_zong_yin
  • hao_zong_yin
  • 2017-07-23 10:31:13
  • 141

UVA 1639——Candy(期望,精度处理)

题目链接:点击打开链接 题目大意:p为打开盒子1的概率, 1-p为打开盒子2的概率,求打开一个盒子其中的糖数为零时,另一个盒子里的剩余糖数 主要知识点:求算期望,但是由于题目要求的精度比较高,所以...
  • WSS_ang
  • WSS_ang
  • 2017-07-24 00:41:31
  • 104

uva 1639 Candy 大数的对数处理 数学期望

1. 当排列组合数或者幂很大时可以利用对数计算,之后再用exp还原,保证一定的精度。 2. 数学期望是每一个可能的值和相应的概率的乘积和,没有可能值可以设。 3. 仔细读题,吃完最后一个糖果后不知道是...
  • cFarmerReally
  • cFarmerReally
  • 2016-09-08 16:54:00
  • 410

1639 - Candy (数学期望)

该题如果用普通方法,精度损失太大,而且组合数也太大,难以求解。 但是如果用组合数公式,阶乘又太大,会溢出,所以我们可以采用取对数的方法,将组合数和取对数操作一起进行,然后用库函数exp()转换回来就...
  • weizhuwyzc000
  • weizhuwyzc000
  • 2015-09-04 10:24:54
  • 441
收藏助手
不良信息举报
您举报文章:Candy UVA - 1639
举报原因:
原因补充:

(最多只允许输入30个字)