码迷,mamicode.com
首页 > 其他好文 > 详细

[bzoj 1415]聪聪和可可

时间:2017-10-05 17:18:43      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:没有   line   lin   main   int   span   时间   多个   init   

题目大意:

猫和鼠在一无向图上,每秒猫向相邻的最靠近鼠的点(有多个取编号最小)移动,若没有位于同一点上则可再移动一步,鼠等概率向相邻点移动或静止.求猫鼠在同一点上的时间期望值.

 

过了半个月再做期望怕是有点虚~

然后这题还有记忆化DP.

代码如下(似乎跑的非常慢):

 

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <vector>
 4 #include <queue>
 5 using namespace std;
 6 #define mcl(a,v) memset(a,v,sizeof(a))
 7 const int N = 1010;
 8 vector<int> G[N];queue<int> q;
 9 double f[N][N];int x[N][N],dis[N][N],deg[N],sc,sm,n,m;
10 double dfs(int i,int j)
11 {
12     if(f[i][j] != -1.0) return f[i][j];
13     if(!dis[i][j]) return f[i][j] = 0.0;
14     if(dis[i][j] <= 2) return f[i][j] = 1.0;
15     f[i][j] = 0.0;
16     for(int k = 0;k < G[j].size();k++) f[i][j] += dfs(x[x[i][j]][j],G[j][k]);
17     f[i][j] = (f[i][j] + dfs(x[x[i][j]][j],j)) / (double)(deg[j] + 1) + 1;
18     return f[i][j];
19 }
20 void init(){for(int i = 0;i < N;i++) for(int j = 0;j < N;j++) f[i][j] = -1.0;mcl(dis,-1);mcl(deg,0);mcl(x,0x3c);}
21 void pre()
22 {
23     for(int i = 1;i <= n;i++)
24     {
25         dis[i][i] = 0;q.push(i);
26         while(!q.empty())
27         {
28             int a = q.front();q.pop();
29             for(int k = 0;k < G[a].size();k++) if(dis[i][G[a][k]] == -1.0) {dis[i][G[a][k]] = dis[i][a] + 1;q.push(G[a][k]);}
30         }
31     }
32     for(int i = 1;i <= n;i++) for(int k = 0;k < G[i].size();k++) for(int j = 1;j <= n;j++) if((dis[i][j] == dis[G[i][k]][j] + 1) && (x[i][j] > G[i][k])) x[i][j] = G[i][k];
33 }
34 int main()
35 {
36     scanf("%d %d %d %d",&n,&m,&sc,&sm);
37     init();for(int i = 1,u,v;i <= m;i++){scanf("%d %d",&u,&v);G[u].push_back(v);G[v].push_back(u);deg[u]++;deg[v]++;}pre();
38     printf("%.3f\n",dfs(sc,sm));
39     return 0;
40 }

 

[bzoj 1415]聪聪和可可

标签:没有   line   lin   main   int   span   时间   多个   init   

原文地址:http://www.cnblogs.com/gcc314/p/7629414.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!