BZOJ1415 Noi2005 聰聰和可可

2021-07-26 23:59:22 字數 941 閱讀 9010

portal

一張無向連通圖,貓和老鼠起始點分別位於a,b。每一步貓先行,老鼠每一步可以走連向當前點的任意一條邊,也可以不動,概率相同。貓每一步走向離老鼠最近的點,若該點有多個,選擇標號最小的乙個,若一步沒有到老鼠所在點,還可以再走一步。求貓捉到老鼠的期望步數。

首先可以先預處理出陣列p[x][y]表示若貓在點x,老鼠在點y,當前狀態下,貓會移動到的下乙個點。可用類似spfa的寫法。然後遞迴記憶化求期望。f[x][y]表示貓在點x,老鼠在點y,期望的步數。

double dp(int x,int y)

#include 

#include

#include

#include

#define inf 1000000001

#define mod 1000000007

#define n 1005

using

namespace

std;

typedef

long

long ll;

int read()

while(isdigit(ch))

return x*f;

}int n,m,cnt,a,b;

int b[n<<1],p[n],next[n<<1];

int dis[n][n],p[n][n],d[n];

double f[n][n];

bool flag[n];

void add(int x,int y)

void anode(int x,int y)

void input_init()

} void pre_bfs(int x)}}

}}double dp(int x,int y)

int main()

BZOJ1415 Noi2005 聰聰和可可

資料的第1行為兩個整數n和e,以空格分隔,分別表示森林中的景點數和連線相鄰景點的路的條數。第2行包含兩個整數c和m,以空格分隔,分別表示初始時聰聰和可可所在的景點的編號。接下來e行,每行兩個整數,第i 2行的兩個整數ai和bi表示景點ai和景點bi之間有一條路。所有的路都是無向的,即 如果能從a走到...

bzoj1415 Noi2005 聰聰和可可

傳送門 記憶化搜尋。用f i j 表示兩個人物在i和j時的期望值。然後列舉各種情況 1.重合 答案為0 2.差兩步之內 答案為1 3.差2步以上 走兩步後的f值 1 取乙個平均值就可以了。include include include include include include using na...

bzoj1415 noi2005 聰聰和可可 期望

本來毫無思路,看到網上設了二維陣列表示期望後,覺得很妙。設f i j 為聰聰在i,可可在j的聰聰吃到可可的時間期望。dis i j 1 2 時,f i j 1 i j 時,f i j 0 由於聰聰能走2步,可可每次只能走一步,所以dis i j 一定是越來越小的。我們可以先處理出g i j 表示此時...