## ZOJ3551 Bloodsucker(概率dp)

Bloodsucker

Time Limit: 2 Seconds      Memory Limit: 65536 KB

In 0th day, there are n-1 people and 1 bloodsucker. Every day, two and only two of them meet. Nothing will happen if they are of the same species, that is, a people meets a people or a bloodsucker meets a bloodsucker. Otherwise, people may be transformed into bloodsucker with probability p. Sooner or later(D days), all people will be turned into bloodsucker. Calculate the mathematical expectation of D.

#### Input

The number of test cases (TT ≤ 100) is given in the first line of the input. Each case consists of an integer n and a float number p (1 ≤ n < 100000, 0 < p ≤ 1, accurate to 3 digits after decimal point), separated by spaces.

#### Output

For each case, you should output the expectation(3 digits after the decimal point) in a single line.

#### Sample Input

1
2 1



#### Sample Output

1.000

/**
* code generated by JHelper
* @author xyiyy @https://github.com/xyiyy
*/

#include <iostream>
#include <fstream>

//#####################
//Author:fraud
//Blog: http://www.cnblogs.com/fraud/
//#####################
#include <iostream>
#include <sstream>
#include <ios>
#include <iomanip>
#include <functional>
#include <algorithm>
#include <vector>
#include <string>
#include <list>
#include <queue>
#include <deque>
#include <stack>
#include <set>
#include <map>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <climits>
#include <cctype>

using namespace std;
#define dep(X, R, L) for(int X=R;X>=L;X--)

double dp[100010];

public:
void solve(std::istream &in, std::ostream &out) {
int t;
in >> t;
while (t--) {
int n;
double p;
in >> n >> p;
dp[n - 1] = 0;
double tot = (double) n * (n - 1) / 2 / p;
dep(i, n - 2, 0) {
dp[i] = dp[i + 1] + tot / (i + 1) / (n - i - 1);
}
out << fixed << setprecision(3) << dp[0] << endl;
}
}
};

int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(0);
std::istream &in(std::cin);
std::ostream &out(std::cout);
solver.solve(in, out);
return 0;
}

posted on 2015-08-16 00:49  xyiyy  阅读(...)  评论(...编辑  收藏

• 随笔 - 102
• 文章 - 0
• 评论 - 7
• 引用 - 0