【数学期望】【2012 ACM/ICPC 成都赛区现场赛】【B.Candy】
2013-02-07 16:21
525 查看
【题目来源】http://acm.hdu.edu.cn/showproblem.php?pid=4465
【题目分析】公式: Ans = Sum{(N - I)* C(I, N + I) * (P^(N + 1) * Q^I + Q^(N + 1) * P ^I)},这个题目重在实现这个公式的技巧。我们注意到这个题目在中间过程可能会涉及高精度,但是结果是不会大于20W的。因此将之间的数都取Ln对数,最后在用指数还原。
【代码如下】
【题目分析】公式: Ans = Sum{(N - I)* C(I, N + I) * (P^(N + 1) * Q^I + Q^(N + 1) * P ^I)},这个题目重在实现这个公式的技巧。我们注意到这个题目在中间过程可能会涉及高精度,但是结果是不会大于20W的。因此将之间的数都取Ln对数,最后在用指数还原。
【代码如下】
#include <iostream> #include <iomanip> #include <cstdio> #include <cmath> #define FILE_IO using namespace std; int N, Cnt; double P, Q, Ans; int main() { #ifdef FILE_IO freopen("test.in", "r", stdin); #endif // FILE_IO while (cin >> N >> P) { Q = log(1 - P), P = log(P); double Tp = (N + 1) * P, Tq = (N + 1) * Q, Ans = 0, Tc = 0; for (int i = 0; i < N; ++i) { if (Tp + Tc > -30 || Tq + Tc > -30) Ans += (exp(Tp + Tc) +exp(Tq + Tc)) * (N - i); Tp += Q, Tq += P, Tc += log(N + i + 1) - log(i + 1); } cout << "Case " << ++Cnt << ": "; cout << setprecision(12) << setiosflags(ios :: fixed) << Ans << endl; } return 0; }
相关文章推荐
- 2012ACM/ICPC成都赛区现场赛A题---Browsing History(hdu4464)
- 2012ACM/ICPC成都赛区现场赛I题---Count(hdu4472)
- hdu 4465 Candy(2012 ACM-ICPC 成都现场赛)
- 2012 ICPC/ACM 成都现场赛 Candy
- hdu 4465 Candy(2012 ACM-ICPC 成都现场赛)
- 【数学期望】Candy, ACM/ICPC Chengdu 2012, UVa1639 【精度】
- 【DP】【2012 ACM/ICPC 成都赛区现场赛】【I.Count】
- uva 1639 Candy | ACM\ICPC Chengdu 2012 (期望)
- 2012ACM/ICPC亚洲区域赛成都赛区 总结
- HDU5073 ACM-ICPC亚洲区域赛鞍山赛区现场赛D题 Galaxy 贪心+数学推导
- HDU-4472-Count (2012 ACM/ICPC成都现场赛)
- HDU-4464-Browsing History (2012 ACM/ICPC成都现场赛!)
- hdu 4472 Count (2012 ACM-ICPC 成都现场赛)
- 2012 ACM/ICPC 成都赛区网络赛 HDU 4296
- HDU 4790 2013 ACM/ICPC 成都赛区现场赛 J. Just Random
- hdu 4472 Count (2012 ACM-ICPC 成都现场赛)
- 2012 ACM/ICPC 成都赛区网络赛A题解题报告
- hdu 4473 Exam (2012ACM成都赛区现场赛J题)
- 2011 ACM/ICPC 成都赛区(为2013/10/20成都现场赛Fighting)
- HDU 4790 Just Random (2013ACM/ICPC成都赛区现场赛J题)