BZOJ3143 [Hnoi2013]游走

算出每条边的期望走过次数,期望大的给小的编号,答案就最小

每条边的期望走过次数可以由两个端点的期望次数算出来

1个点的期望走过次数可以由与他相邻的点的期望表示出来

比较特殊的是n号点不会对任何点的期望产生恭喜,因为到n就停了,还有1号点的期望次数要+1因为他是起点

然后高斯消元就可以解出每个点的期望,然后每条边的期望也就能算出来了

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define MAXN 510
#define MAXM 1010
#define eps 1e-8
#define ll long long
#define INF 1000000000
#define MOD 1000000007
double a[MAXN][MAXN];
int n,m;
bool mp[MAXN][MAXN];
int d[MAXN];
double e[MAXN*MAXN];
int tot;
double ans;
void gs(){
	int i,j,k;
	for(i=1;ieps){
					for(k=1;k<=n+1;k++){
						swap(a[i][k],a[j][k]);
					}
					break;
				}
			}
		}
		if(fabs(a[i][i])>eps){
			for(j=1;j


 

你可能感兴趣的:(BZOJ,高斯消元)