bzoj1415 聰聰和可可

2021-08-29 05:25:09 字數 895 閱讀 8061

對於任意一對位置x,y我們可以找到聰聰的行走方案。(這個可以bfs跑)

然後我們用f[x,y]表示聰聰在x,可可在y抓住的期望時間,於是轉移方程是:

if(x==y)f[x][y]=0,

if(x走兩步能到y)f[x][y]=1,

else

f[x][y]=(sigma(f[x_nxtpos][y_nxtpos])+1)/(d[y]+1);

記憶化搜尋轉移。

#includeusing namespace std;

const int n=1e3+2,m=2e3+2;

const int inf=0x3f3f3f3f;

int d[n],n,m,c,t;

int hed[n],nxt[m],to[m],cnt;

inline void adde(int u,int v)

queueq;

int going[n][n];

bool vis[n];

int dis[n];

inline void bfs(int s)

vis[s]=true;

while(!q.empty())

else going[s][v]=min(going[s][u],going[s][v]);}}

}double f[n][n];

double dp(int x,int y)

int main()

for(int i=1;i<=n;i++)

bfs(i);

double ans=dp(c,t);

printf("%.3lf\n",ans);

}

bzoj 1415 聰聰和可可 期望

可以先預處理出當聰聰在 i 點,可可在 j 點時,聰聰下一步到達的點的編號,記為p i,j bfs即可。設f i,j 表示聰聰在 i,可可在 j 時的期望步數,w i,j 為與i相鄰的第 j 個點編號,t i 為 i 點的度數,則有f i,j t i k 1f p p i j j w j,k f p...

BZOJ 1415 聰聰和可可 期望DP

我們可以用n次bfs預處理出 to陣列,to i j 表示聰聰從i點到j點第一步會走哪個點。那麼對於聰聰在i點,可可在j點,聰聰先走,定義dp i j 表示步數期望。那麼顯然有dp i j sigma dp p w dp p j dee j 1 1.其中p表示to to i j j w表示j點鄰接的...

BZOJ1415 Noi2005 聰聰和可可

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