首页 > 代码库 > hdu4050----wolf5x
hdu4050----wolf5x
wolf5x
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 409 Accepted Submission(s): 253
Special Judge
Problem Description
There are n grids in a row. The coordinates of grids are numbered from x=1 to x=n. Someone starts from x=0. You can step forward with your left leg or right leg alternatively in turn.Namely,if you step forward with your left leg, then you must step with your right leg next. As you can not jump , only one leg is allowed to use each step. Every step you take is in the range of [A,B], inclusively; namely, every step you take is at most B units and at least A units.
Before you start to move, the grids will be initialized randomly with 4 states(0,1,2,3), and p[i][j] means the probability of ith grid initialized with state j. After initialization, the state of the grids will not change.
State 0 means you can‘t step into the correspoding grid.
State 1 means you can just step into the grid with your left leg.
State 2 means you can just step into the grid with your right leg.
State 3 means you can step into the grid with either of your legs,and the next step,you can use any legs; namely you don‘t need to follow the rules above.
If x>n, then the grid can be stepped in with arbitrary method.means you can step at the place after the nth grid.
For every step,you will choose the “step method” with the minimum step length. Namely, if you can take the step of S units and S+1 units, you will choose the step of S units.
Until you can‘t step in any grids in front of you,or you have been in a grid x>n, you will stop.
Can you calculate the expectation of the steps when you stop?
Before you start to move, the grids will be initialized randomly with 4 states(0,1,2,3), and p[i][j] means the probability of ith grid initialized with state j. After initialization, the state of the grids will not change.
State 0 means you can‘t step into the correspoding grid.
State 1 means you can just step into the grid with your left leg.
State 2 means you can just step into the grid with your right leg.
State 3 means you can step into the grid with either of your legs,and the next step,you can use any legs; namely you don‘t need to follow the rules above.
If x>n, then the grid can be stepped in with arbitrary method.means you can step at the place after the nth grid.
For every step,you will choose the “step method” with the minimum step length. Namely, if you can take the step of S units and S+1 units, you will choose the step of S units.
Until you can‘t step in any grids in front of you,or you have been in a grid x>n, you will stop.
Can you calculate the expectation of the steps when you stop?
Input
An integer T means the number of cases.T<=30
For each case,the first line is three integers n,A,B.
The next n lines,each line has 4 number p[i][0], p[i][1], p[i][2], p[i][3].
1 <= A <= B <= n<= 2000.
0 <= p[i][j] <= 1, p[i][0]+p[i][1]+p[i][2]+p[i][3] = 1.
For each case,the first line is three integers n,A,B.
The next n lines,each line has 4 number p[i][0], p[i][1], p[i][2], p[i][3].
1 <= A <= B <= n<= 2000.
0 <= p[i][j] <= 1, p[i][0]+p[i][1]+p[i][2]+p[i][3] = 1.
Output
The expectation of the steps when you stop
you can assume that the relative epsilon is no more than 1e-6
you can assume that the relative epsilon is no more than 1e-6
Sample Input
9 2 1 1 0 0.5 0.5 0 0 0 1 0 2 1 1 0 0.5 0.5 0 0.5 0.5 0 0 2 1 2 0 0.5 0.5 0 0 0 1 0 2 1 2 0.2 0.3 0.4 0.1 0.15 0.2 0.25 0.4 3 1 10 0 0 0 1 0 0 0 1 0 0 0 1 3 1 1 0 0 0 1 0 0 0 1 0 0 0 1 3 2 2 0 0 0 1 0 0 0 1 0 0 0 1 3 3 3 0 0 0 1 0 0 0 1 0 0 0 1 3 1 2 0.0 0.3 0.6 0.1 0.1 0.2 0.3 0.4 0.5 0.4 0.1 0.0
Sample Output
2.00000000 1.50000000 2.50000000 2.46000000 4.00000000 4.00000000 2.00000000 2.00000000 2.80200000
Source
The 36th ACM/ICPC Asia Regional Beijing Site —— Online Contest
Recommend
lcy | We have carefully selected several similar problems for you: 4049 4043 4041 4044 4047
还不是很懂这道题
/************************************************************************* > File Name: hdu4050.cpp > Author: ALex > Mail: 405045132@qq.com > Created Time: 2015年01月01日 星期四 18时51分49秒 ************************************************************************/ #include <map> #include <set> #include <queue> #include <stack> #include <vector> #include <cmath> #include <cstdio> #include <cstdlib> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int N = 4010; double p[N][4]; double dp[N][4]; int main() { int t; scanf("%d", &t); while (t--) { int n, a, b; scanf("%d%d%d", &n, &a, &b); memset (dp, 0, sizeof(dp)); memset (p, 0, sizeof(p)); for (int i = n + 1; i <= n + a; ++i) { p[i][3] = 1; } for (int i = 1; i <= n; ++i) { scanf("%lf%lf%lf%lf", &p[i][0], &p[i][1], &p[i][2], &p[i][3]); } dp[0][3] = 1; for (int i = 0; i <= n; ++i) { double p1 = 1; double p2 = 1; double p3 = 1; for (int j = a; j <= b; ++j) { dp[i + j][1] += (dp[i][2] * p2 + dp[i][3] * p3) * p[i + j][1]; dp[i + j][2] += (dp[i][1] * p1 + dp[i][3] * p3) * p[i + j][2]; dp[i + j][3] += (dp[i][1] * p1 + dp[i][2] * p2 + dp[i][3] * p3) * p[i + j][3]; p1 *= (p[i + j][0] + p[i + j][1]); p2 *= (p[i + j][0] + p[i + j][2]); p3 *= p[i + j][0]; } } double ans = 0; for (int i = 1; i <= n + a; ++i) { for (int j = 1; j < 4; ++j) { ans += dp[i][j]; } } printf("%.8f\n", ans); } return 0; }
hdu4050----wolf5x
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。