Random Walk
Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 65535/65536 K (Java/Others)Total Submission(s): 81 Accepted Submission(s): 35
Problem Description
Yuanfang is walking on a chain. The chain has n nodes numbered from 1 to n. Every second, he can move from node i to node j with probability: c(i,j) is an element in a given parameter matrix which is n×m. (1 <= c(i, j) <= 9) Yuanfang wants to know the expectation time for him to walk from node 1 to node n.
Input
There are no more than 10 test cases. In each case, there are two integers n (2 <= n <= 50000), m (1 <= m <= 5), in the first line, meaning that there are n nodes and the parameter matrix is n×m . There are m integers in each of the next n lines which describe the parameter matrix . The input ends with 0 0.
Output
For each case, output the expectation time for Yuanfang to walk from node 1 to node n in one line. The answer should be rounded to 2 digits after decimal point.
Sample Input
3 1 1 1 1 5 2 1 2 2 1 3 2 2 3 1 3 0 0
Sample Output
6.94 8.75
Source
这题就是列出方程。
然后高斯消元解方程。
如果是一般的方程,高斯消元需要O(n*n)
但是这题的矩阵很特别
很快就可以消掉了。
用dp[i]表示i到n的期望。
dp[n]=0;
对于第i个方程,最多只有2*m+1个系数是不为0的。
1 /* ********************************************** 2 Author : kuangbin 3 Created Time: 2013/8/12 20:28:58 4 File Name : F:\2013ACM练习\比赛练习\2013杭州邀请赛重现\1004.cpp 5 *********************************************** */ 6 7 #include8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include