此題為高斯消元求期望的入門題目, 做法就是對圖中非x的點重新標號, 令ei表示從該點出發到達終點的期望走過的步數,對於終點的e值顯然為0, 最後的結果為起點的e值,方程也不難得到。 注意普通的高斯消元化成上三角陣用在這類題目可能會有問題, 因為會出現方程無解的情況, 這樣在高斯消元最後一步回代的過程中會出現問題, lrj的白書中給出了一種化為對角陣的高斯消元法, 避免了這個問題, 細節詳見**。
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;
const int n = 205;
const double eps = 1e-8;
#define fi first
#define se second
double a[n][n];
int idx[15][15];
bool inf[n];
int d[n];
char mat[15][15];
int n, m, c, st, ed;
pairpts[n];
vectoradj[n];
int dx = ;
int dy = ;
bool ok(int x, int y)
void gauss()
}void gao()
} for (int i = 0; i < c; i++)
fill(a[i], a[i] + c + 1, 0);
for (int i = 0; i < c; i++)
int x = pts[i].fi, y = pts[i].se;
int tmp = 0;
for (int j = 0; j < 4; j++)
} if (tmp)
a[i][i] = 1;
for (int j = 0; j < adj[i].size(); j++)
a[i][c] = 1; }
gauss();
memset(inf, 0, sizeof(inf));
for (int i = c - 1; i >= 0; i--)
}int main()
return 0;
}
ZJUT 1423 地下迷宮(概率DP 高斯消元)
題目大意 由於山體滑坡,dk被困在了地下蜘蛛王國迷宮。為了搶在dh之前來到tft,dk必須盡快走出此迷宮。此迷宮僅有乙個出口,而由於大boss的力量減弱影響到了dk,使dk的記憶力嚴重下降,他甚至無法記得他上一步做了什麼。所以他只能每次等概率隨機的選取乙個方向走。當然他不會選取周圍有障礙的地方走。如...
ZJUT 地下迷宮 (高斯求期望)
設dp i 表示在i點時到達終點要走的期望步數,那麼dp i 1 m dp j 1,j是與i相連的點,m是與i相鄰的點數,建立方程組求解。重要的一點是先判斷dk到達不了的點,需要bfs預處理一下進行離散化,再建立方程組。include include include include include ...
高斯消元與期望DP
高斯消元可以解決一系列dp序混亂的無向圖上 期望 dp dp序是一道dp的所有狀態的乙個排列,使狀態x所需的所有前置狀態都位於狀態x前 通俗的說,在乙個狀態轉移方程中 左側的狀態應該在 右側的所有狀態之後 於是往往只有按dp序轉移狀態,才可以保證每個狀態值的正確性 一道dp的狀態序不是唯一的 常見的...