【BZOJ1415】 [Noi2005]聪聪和可可 概率与期望

其实题不难,不知提交了几次。。。不能代码MD。。。注意一些基本问题。。。SB概率题

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #define N 1001
 5 using namespace std;
 6 double f[N][N];
 7 int n,m,cnt,a,b;
 8 struct E{int next,to;}e[2*N+10];
 9 int head[N],ds[N],q[N],dis[N][N],p[N][N];
10 inline int read()
11 {
12     int ans=0,f=1;
13     char c;
14     while (!isdigit(c=getchar())) if (c==‘-‘) f=-1;
15     ans=c-‘0‘;
16     while (isdigit(c=getchar())) ans=ans*10+c-‘0‘;
17     return ans*f;
18 }
19 void insert(int u,int v)
20 {
21     cnt++; e[cnt].next=head[u]; head[u]=cnt; e[cnt].to=v; ds[u]++;
22     cnt++; e[cnt].next=head[v]; head[v]=cnt; e[cnt].to=u; ds[v]++;
23 }
24 double DP(int x,int y)
25 {
26     if (f[x][y]) return f[x][y];
27     if (x==y) return 0;
28     if (p[x][y]==y || p[p[x][y]][y]==y) return f[x][y]=1;
29     double tot=DP(p[p[x][y]][y],y);
30     for (int i=head[y];i;i=e[i].next)
31         tot+=DP(p[p[x][y]][y],e[i].to);
32     return f[x][y]=tot/(ds[y]+1)+1;
33 }
34 void Bfs(int x)
35 {
36     int t=0,w=1;
37     q[t]=x;
38     dis[x][x]=0;
39     while (t!=w)
40     {
41         int now=q[t],tmp=p[x][now];
42         t++; if (t==1001) t=0;
43         for (int i=head[now];i;i=e[i].next)
44             if (dis[x][e[i].to]==-1 || (dis[x][e[i].to]==dis[x][now]+1 && tmp<p[x][e[i].to]))
45             {
46                 dis[x][e[i].to]=dis[x][now]+1;
47                 p[x][e[i].to]=tmp;
48                 if (!tmp) p[x][e[i].to]=e[i].to;
49                 q[w]=e[i].to;
50                 w++; if (w==1001) w=0;
51             }
52     }
53 }
54 int main()
55 {
56     memset(dis,-1,sizeof(dis));
57     n=read(); m=read(); a=read(); b=read();
58     for (int i=1;i<=m;i++)
59     {
60         int u,v;
61         u=read(); v=read();
62         insert(u,v);
63     }
64     for (int i=1;i<=n;i++) Bfs(i);
65     printf("%.3lf",DP(a,b));
66     return 0;
67 }


Description

Input

数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数。 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号。 接下来E行,每行两个整数,第i+2行的两个整数Ai和Bi表示景点Ai和景点Bi之间有一条路。 所有的路都是无向的,即:如果能从A走到B,就可以从B走到A。 输入保证任何两个景点之间不会有多于一条路直接相连,且聪聪和可可之间必有路直接或间接的相连。

Output

输出1个实数,四舍五入保留三位小数,表示平均多少个时间单位后聪聪会把可可吃掉。

Sample Input

【输入样例1】
4 3
1 4
1 2
2 3
3 4
【输入样例2】
9 9
9 3
1 2
2 3
3 4
4 5
3 6
4 6
4 7
7 8
8 9

Sample Output

【输出样例1】
1.500
【输出样例2】
2.167

HINT

【样例说明1】
开始时,聪聪和可可分别在景点1和景点4。
第一个时刻,聪聪先走,她向更靠近可可(景点4)的景点走动,走到景点2,然后走到景点3;假定忽略走路所花时间。
可可后走,有两种可能:
第一种是走到景点3,这样聪聪和可可到达同一个景点,可可被吃掉,步数为1,概率为 。
第二种是停在景点4,不被吃掉。概率为 。
到第二个时刻,聪聪向更靠近可可(景点4)的景点走动,只需要走一步即和可可在同一景点。因此这种情况下聪聪会在两步吃掉可可。
所以平均的步数是1* +2* =1.5步。

对于所有的数据,1≤N,E≤1000。
对于50%的数据,1≤N≤50。

Source

时间: 2024-12-19 17:17:48

【BZOJ1415】 [Noi2005]聪聪和可可 概率与期望的相关文章

bzoj1415【NOI2005】聪聪和可可

1415: [Noi2005]聪聪和可可 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1271  Solved: 748 [Submit][Status][Discuss] Description Input 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行,每行两个整数,第i+2行的两个整数Ai和Bi表示景

【BZOJ1415】【NOI2005】聪聪和可可(动态规划,数学期望)

[BZOJ1415][NOI2005]聪聪和可可(动态规划,数学期望) 题面 BZOJ 题解 先预处理出当可可在某个点,聪聪在某个点时 聪聪会往哪里走 然后记忆化搜索一下就好了 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #include<set> #i

Bzoj1415 [Noi2005]聪聪和可可

Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1586  Solved: 929 Description Input 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行,每行两个整数,第i+2行的两个整数Ai和Bi表示景点Ai和景点Bi之间有一条路. 所有的路都是无向的,即:如果能从A走到B,就可以从B走到A. 输

【bzoj1415】[Noi2005]聪聪和可可 期望记忆化搜索

题目描述 输入 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行,每行两个整数,第i+2行的两个整数Ai和Bi表示景点Ai和景点Bi之间有一条路. 所有的路都是无向的,即:如果能从A走到B,就可以从B走到A. 输入保证任何两个景点之间不会有多于一条路直接相连,且聪聪和可可之间必有路直接或间接的相连. 输出 输出1个实数,四舍五入保留三位小数,表示平均多少个时间单

bzoj 1415 [Noi2005]聪聪和可可——其实无环的图上概率

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1415 乍一看和"游走"一样.于是高斯消元.n^2状态,复杂度n^6-- 看看TJ,发现因为聪聪不是随便走的,所以聪聪一直逼近可可.故其实无环.可以记搜. (1A还是不错的) #include<iostream> #include<cstdio> #include<cstring> #include<queue> using name

【BZOJ】【1415】【NOI2005】聪聪和可可

数学期望+记忆化搜索 论文:<浅析竞赛中一类数学期望问题的解决方法>——汤可因  中的第一题…… Orz 黄学长 我实在是太弱,这么简单都yy不出来…… 宽搜预处理有点spfa的感觉= =凡是更新了的,都要重新入队更新一遍…… dp的记忆化搜索过程好厉害…… 期望这里一直很虚啊,赶紧再多做点题熟悉熟悉…… 1 /************************************************************** 2 Problem: 1415 3 User: Tunix

【BZOJ 1415】 1415: [Noi2005]聪聪和可可 (bfs+记忆化搜索+期望)

1415: [Noi2005]聪聪和可可 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1640  Solved: 962 Description Input 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行,每行两个整数,第i+2行的两个整数Ai和Bi表示景点Ai和景点Bi之间有一条路. 所有的路都是无向的,即

【NOI2005】聪聪与可可

P2432 - [NOI2005]聪聪与可可 Description 在一个魔法森林里,住着一只聪明的小猫聪聪和一只可爱的小老鼠可可.虽然灰姑娘非常喜欢她们俩,但是,聪聪终究是一只猫,而可可终究是一只老鼠,同样不变的是,聪聪成天想着要吃掉可可. 一天,聪聪意外得到了一台非常有用的机器,据说是叫GPS,对可可能准确的定位.有了这台机器,聪聪要吃可可就易如反掌了.于是,聪聪准备 马上出发,去找可可.而可怜的可可还不知道大难即将临头,仍在森林里无忧无虑的玩耍.小兔子乖乖听到这件事,马上向灰姑娘报告.灰

BZOJ 1415 NOI2005 聪聪和可可 期望DP+记忆化搜索 BZOJ200题达成&amp;&amp;NOI2005全AC达成

题目大意:给定一个无向图,聪聪在起点,可可在终点,每个时刻聪聪会沿最短路走向可可两步(如果有多条最短路走编号最小的点),然后可可会等概率向周围走或不动,求平均多少个时刻后聪聪和可可相遇 今天早上起床发现194了然后就各种刷--当我发现199的时候我决定把第200题交给05年NOI仅剩的一道题--结果尼玛调了能有一个小时--我居然没看到编号最小这个限制0.0 首先我们知道,由于聪聪走两步而可可走一步,所以聪聪一定能在有限的时刻追上可可,而且两人的距离随着时间进行单调递减 于是我们记忆化搜索 首先用