傳送門
記憶化搜尋。
用f[i][j]表示兩個人物在i和j時的期望值。
然後列舉各種情況:
1.重合:答案為0
2.差兩步之內:答案為1
3.差2步以上:走兩步後的f值+1
取乙個平均值就可以了。
#include
#include
#include
#include
#include
#include
using namespace std;
const int m=1005;
struct edgee[m*2];
int head[m],deg[m],p[m][m],dis[m],q[100005],v[m],from[m];
int tot,n,m,pp,qq,x,y;
double f[m][m];
inline void add(int
x,int
y)inline void bfs(int st)}}
for (int i=1;i<=n;i++)
if (i!=st) p[i][st]=from[i];
}double dfs(int
x,int
y)int main()
for (int i=1;i<=n;i++) bfs(i);
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++) f[i][j]=-2;
printf("%.3lf",dfs(pp,qq));
}
BZOJ1415 Noi2005 聰聰和可可
資料的第1行為兩個整數n和e,以空格分隔,分別表示森林中的景點數和連線相鄰景點的路的條數。第2行包含兩個整數c和m,以空格分隔,分別表示初始時聰聰和可可所在的景點的編號。接下來e行,每行兩個整數,第i 2行的兩個整數ai和bi表示景點ai和景點bi之間有一條路。所有的路都是無向的,即 如果能從a走到...
BZOJ1415 Noi2005 聰聰和可可
portal 一張無向連通圖,貓和老鼠起始點分別位於a,b。每一步貓先行,老鼠每一步可以走連向當前點的任意一條邊,也可以不動,概率相同。貓每一步走向離老鼠最近的點,若該點有多個,選擇標號最小的乙個,若一步沒有到老鼠所在點,還可以再走一步。求貓捉到老鼠的期望步數。首先可以先預處理出陣列p x y 表示...
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 表示此時...