Codeforces Round #293 (Div. 2) -- D. Ilya and Escalator (DP)
2015-02-25 13:34
344 查看
D. Ilya and Escalator
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
Ilya got tired of sports programming, left university and got a job in the subway. He was given the task to determine the escalator load factor.
Let's assume that n people stand in the queue for the escalator. At each second one of the two following possibilities takes place: either the first person
in the queue enters the escalator with probability p, or the first person in the queue doesn't move with probability (1 - p),
paralyzed by his fear of escalators and making the whole queue wait behind him.
Formally speaking, the i-th person in the queue cannot enter the escalator until people with indices from 1 to i - 1 inclusive
enter it. In one second only one person can enter the escalator. The escalator is infinite, so if a person enters it, he never leaves it, that is he will be standing on the escalator at any following second. Ilya needs to count the expected value of the number
of people standing on the escalator after t seconds.
Your task is to help him solve this complicated task.
Input
The first line of the input contains three numbers n, p, t (1 ≤ n, t ≤ 2000, 0 ≤ p ≤ 1).
Numbers n and t are integers, number p is
real, given with exactly two digits after the decimal point.
Output
Print a single real number — the expected number of people who will be standing on the escalator after t seconds. The absolute or relative error mustn't
exceed 10 - 6.
Sample test(s)
input
output
input
output
input
output
思路:将概率式子展开即可,用dp的方法求得概率展开式子的每一项
AC代码:
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
Ilya got tired of sports programming, left university and got a job in the subway. He was given the task to determine the escalator load factor.
Let's assume that n people stand in the queue for the escalator. At each second one of the two following possibilities takes place: either the first person
in the queue enters the escalator with probability p, or the first person in the queue doesn't move with probability (1 - p),
paralyzed by his fear of escalators and making the whole queue wait behind him.
Formally speaking, the i-th person in the queue cannot enter the escalator until people with indices from 1 to i - 1 inclusive
enter it. In one second only one person can enter the escalator. The escalator is infinite, so if a person enters it, he never leaves it, that is he will be standing on the escalator at any following second. Ilya needs to count the expected value of the number
of people standing on the escalator after t seconds.
Your task is to help him solve this complicated task.
Input
The first line of the input contains three numbers n, p, t (1 ≤ n, t ≤ 2000, 0 ≤ p ≤ 1).
Numbers n and t are integers, number p is
real, given with exactly two digits after the decimal point.
Output
Print a single real number — the expected number of people who will be standing on the escalator after t seconds. The absolute or relative error mustn't
exceed 10 - 6.
Sample test(s)
input
1 0.50 1
output
0.5
input
1 0.50 4
output
0.9375
input
4 0.20 2
output
0.4
思路:将概率式子展开即可,用dp的方法求得概率展开式子的每一项
AC代码:
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; double dp[2005][2005]; //dp[i][j]代表第i秒扶梯上有j个人的概率 double p; int n, t; int main() { cin >> n >> p >> t; dp[0][0] = 1; for(int i = 0; i < t; i++) { for(int j = 0; j < n; j++) { dp[i + 1][j] += (1 - p) * dp[i][j]; dp[i + 1][j + 1] += p * dp[i][j]; } dp[i + 1] += dp[i] ; } double ans = 0; for(int i = 0; i <= n; i++) { ans += dp[t][i] * i; } printf("%lf\n", ans); return 0; }
相关文章推荐
- Codeforces Round #293 (Div. 2) D. Ilya and Escalator(概率DP)
- Educational Codeforces Round 39 (Rated for Div. 2)(A-D)(水题 + 模拟 + 贪心模拟 + DP)
- Codeforces Round #338 (Div. 2) 615B Longtail Hedgehog(dp)
- Codeforces Round #343 (Div. 2) E. Famil Door and Roads (树形dp,lca)★ ★ ★
- Codeforces Round #293 (Div. 2) A. Vitaly and Strings(思路)
- Codeforces Round #360 (Div. 2) E. The Values You Can Make dp ,滚动数组
- Codeforces Round 370 (Div 2) D.Memory and Scores 【前缀和 DP】双人随机数值增减K A比B多的方案数
- Codeforces Round #294 (Div. 2) E. A and B and Lecture Rooms(倍增LCA+树形DP)
- codeforces round# 302 (div1 C) (状压dp)
- Codeforces Round #265 (Div. 2)E(数位dp)
- Codeforces Round #384 (Div. 2)D. Chloe and pleasant prizes(树DP)
- Codeforces Round #265 (Div. 1) C. Substitutes in Number dp
- 【Codeforces Round 363 (Div 2) E】【概率DP 期望DP 逆推等价法】LRU Cache替换LRU原则超多步数后每个数据在Cache中的概率
- 【Codeforces Round 326 (Div 2)D】【DP】Duff in Beach 数列重复取数最多k次使得单调不下降
- Codeforces Round #341 (Div. 2) E. Wet Shark and Blocks(矩阵优化DP)
- 递推DP Codeforces Round #260 (Div. 1) A. Boredom
- Codeforces Round #301 (Div. 2)D (概率dp)
- Codeforces Round #189 (Div. 1) Kalila and Dimna in the Logging Industry 斜率DP
- codeforces round 362 div2 D Puzzles 树形dp + 期望
- Codeforces Round #344 (Div. 2) 631A Interview (DP)