ZJUT 1423 地下迷宮(概率DP 高斯消元)

2021-08-28 14:13:26 字數 2128 閱讀 7465

題目大意:由於山體滑坡,dk被困在了地下蜘蛛王國迷宮。為了搶在dh之前來到tft,dk必須盡快走出此迷宮。此迷宮僅有乙個出口,而由於大boss的力量減弱影響到了dk,使dk的記憶力嚴重下降,他甚至無法記得他上一步做了什麼。所以他只能每次等概率隨機的選取乙個方向走。當然他不會選取周圍有障礙的地方走。如dk周圍只有兩處空地,則每個都有1/2的概率。現在要求他平均要走多少步可以走出此迷宮。

input:

先是一行兩個整數n, m(1<=n, m<=10)表示迷宮為n*m大小,

然後是n行,每行m個字元,'.'表示是空地,'e』表示出口,'d』表示dk,'x』表示障礙。

output:

如果dk無法走出或要超過1000000步才能走出,輸出tragedy!,

否則輸出乙個實數表示平均情況下dk要走幾步可以走出迷宮,四捨五入到小數點後兩位。

sample input:

2 1ed

3 3d.x

.x.x.e

sample output:

1.00

tragedy!

題目思路:

首先對地圖節點重新標號。假設e[i]表示dk從i點開始走出迷宮的期望值。

那麼e[i]=(e[a1]+e[a2]+e[a3]+...+e[an])/n+1,其中a1...an是i的相鄰節點。

那麼對於每乙個dk可達的節點來說,都可以為它建立這樣的乙個方程。現在假設dk可達的點有n個,那麼我們最終將會得到n元一次方程組。

最後利用高斯消元解出e[no[s]]。其中s是dk的起點,no[s]是重標號後的起點這裡要重點注意的是,我們聯立方程的時候,一定要注意dk可達這個條件,不然就會導致無解的情況。

zjut 1423

/*地下迷宮

description:

由於山體滑坡,dk被困在了地下蜘蛛王國迷宮。為了搶在dh之前來

到tft,dk必須盡快走出此迷宮。此迷宮僅有乙個出口,而由於大boss

的力量減弱影響到了dk,使dk的記憶力嚴重下降,他甚至無法記得他

上一步做了什麼。所以他只能每次等概率隨機的選取乙個方向走。

當然他不會選取周圍有障礙的地方走。如dk周圍只有兩處空地,則每

個都有1/2的概率。現在要求他平均要走多少步可以走出此迷宮。

input:

先是一行兩個整數n, m(1<=n, m<=10)表示迷宮為n*m大小,

然後是n行,每行m個字元,'.'表示是空地,'e』表示出口,'d』表示dk,'x』表示障礙。

output:

如果dk無法走出或要超過1000000步才能走出,輸出tragedy!,

否則輸出乙個實數表示平均情況下dk要走幾步可以走出迷宮,四捨五入到小數點後兩位。

sample input:2ed

3d.x

.x.x.e

sample output:

1.00

tragedy!

首先對地圖節點重新標號。假設e[i]表示dk從i點開始走出迷宮的期望值。

那麼e[i]=(e[a1]+e[a2]+e[a3]+...+e[an])/n+1,其中a1...an是i的相鄰節點。

那麼對於每乙個dk可達的節點來說,都可以為它建立這樣的乙個方程。現

在假設dk可達的點有n個,那麼我們最終將會得到n元一次方程組。最後

利用高斯消元解出e[no[s]]。其中s是dk的起點,no[s]是重標號後的起點

這裡要重點注意的是,我們聯立方程的時候,一定要注意dk可達這個條件,

不然就會導致無解的情況。

*/#include#include#include#include#include#includeusing namespace std;

#define eps 1e-9

const int maxn=200;

double a[maxn][maxn],x[maxn];//方程的左邊的矩陣和等式右邊的值,求解之後x存的就是結果

int equ,var;//方程數和未知數個數

int gauss()

a[now][now]=count;

x[now]=count;}}

if(gauss())

else printf("tragedy!\n");

}return 0;

}

zjut 1423 (高斯消元 求期望)

此題為高斯消元求期望的入門題目,做法就是對圖中非x的點重新標號,令ei表示從該點出發到達終點的期望走過的步數,對於終點的e值顯然為0,最後的結果為起點的e值,方程也不難得到。注意普通的高斯消元化成上三角陣用在這類題目可能會有問題,因為會出現方程無解的情況,這樣在高斯消元最後一步回代的過程中會出現問題...

174 地下城遊戲

一些惡魔抓住了公主 p 並將她關在了地下城的右下角。地下城是由 m x n 個房間組成的二維網格。我們英勇的騎士 k 最初被安置在左上角的房間裡,他必須穿過地下城並通過對抗惡魔來拯救公主。騎士的初始健康點數為乙個正整數。如果他的健康點數在某一時刻降至 0 或以下,他會立即死亡。有些房間由惡魔守衛,因...

36 地下城遊戲

題目描述 一些惡魔抓住了公主 p 並將她關在了地下城的右下角。地下城是由 m x n 個房間組成的二維網格。我們英勇的騎士 k 最初被安置在左上角的房間裡,他必須穿過地下城並通過對抗惡魔來拯救公主。騎士的初始健康點數為乙個正整數。如果他的健康點數在某一時刻降至 0 或以下,他會立即死亡。有些房間由惡...