【BZOJ3270】博物馆 期望DP+高斯消元
【BZOJ3270】博物馆
Description
Input
Output
Sample Input
1 2
0.5
0.5
Sample Output
HINT
对于100%的数据有 n <= 20,n-1 <= m <= n(n-1)/2
题解:做过了1778再做这题岂不就是老套路啦~
发现点数很少,并且有两个人,自然想到将点拆成n2个,然后就可以构造出转移矩阵,然后ans[I-T]=S。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
#define P(A,B) ((A-1)*n+B)
using namespace std;
int n,m,tot,cnt,A,B;
int to[1000],next[1000],head[1000],d[30];
double v[500][500],p[30],ans[500];
void add(int a,int b)
{
to[cnt]=b,next[cnt]=head[a],head[a]=cnt++;
}
int main()
{
scanf("%d%d%d%d",&n,&m,&A,&B);
tot=n*n;
memset(head,-1,sizeof(head));
int a,b,i,j,k,l;
for(i=1;i<=m;i++) scanf("%d%d",&a,&b),add(a,b),add(b,a),d[a]++,d[b]++;
for(i=1;i<=n;i++) scanf("%lf",&p[i]);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(i==j) continue;
for(k=head[i];k!=-1;k=next[k])
{
for(l=head[j];l!=-1;l=next[l]) v[P(to[k],to[l])][P(i,j)]-=(1-p[i])*(1-p[j])/d[i]/d[j];
v[P(to[k],j)][P(i,j)]-=(1-p[i])*p[j]/d[i];
}
for(l=head[j];l!=-1;l=next[l]) v[P(i,to[l])][P(i,j)]-=p[i]*(1-p[j])/d[j];
v[P(i,j)][P(i,j)]-=p[i]*p[j];
}
}
for(i=1;i<=tot;i++) v[i][i]+=1.0;
v[P(A,B)][tot+1]=1;
for(i=1;i<=tot;i++)
{
for(j=i;j<=tot;j++) if(fabs(v[j][i])>fabs(v[i][i])) for(k=i;k<=tot+1;k++) swap(v[j][k],v[i][k]);
for(j=i+1;j<=tot;j++) if(i!=j)
{
double t=v[j][i]/v[i][i];
for(k=i;k<=tot+1;k++) v[j][k]-=t*v[i][k];
}
}
for(i=tot;i;i--)
{
for(j=i+1;j<=tot;j++) v[i][tot+1]-=v[i][j]*ans[j];
ans[i]=v[i][tot+1]/v[i][i];
}
for(i=1;i<n;i++) printf("%.6lf ",ans[P(i,i)]);
printf("%.6lf",ans[P(n,n)]);
return 0;
}
【BZOJ3270】博物馆 期望DP+高斯消元的更多相关文章
- BZOJ_3143_[Hnoi2013]游走_期望DP+高斯消元
BZOJ_3143_[Hnoi2013]游走_期望DP+高斯消元 题意: 一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机 ...
- BZOJ 3270: 博物馆 [概率DP 高斯消元]
http://www.lydsy.com/JudgeOnline/problem.php?id=3270 题意:一张无向图,一开始两人分别在$x$和$y$,每一分钟在点$i$不走的概率为$p[i]$, ...
- HDU 2262 Where is the canteen 期望dp+高斯消元
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2262 Where is the canteen Time Limit: 10000/5000 MS ...
- hdu4418 Time travel 【期望dp + 高斯消元】
题目链接 BZOJ4418 题解 题意:从一个序列上某一点开始沿一个方向走,走到头返回,每次走的步长各有概率,问走到一点的期望步数,或者无解 我们先将序列倍长形成循环序列,\(n = (N - 1) ...
- 【noi2019集训题1】 脑部进食 期望dp+高斯消元
题目大意:有n个点,m条有向边,每条边上有一个小写字母. 有一个人从1号点开始在这个图上随机游走,游走过程中他会按顺序记录下走过的边上的字符. 如果在某个时刻,他记录下的字符串中,存在一个子序列和S2 ...
- LightOJ 1151 Snakes and Ladders 期望dp+高斯消元
题目传送门 题目大意:10*10的地图,不过可以直接看成1*100的,从1出发,要到达100,每次走的步数用一个大小为6的骰子决定.地图上有很多个通道 A可以直接到B,不过A和B大小不确定 而且 ...
- P4457-[BJOI2018]治疗之雨【期望dp,高斯消元】
正题 题目链接:https://www.luogu.com.cn/problem/P4457 题目大意 开始一个人最大生命值为\(n\),剩余\(hp\)点生命,然后每个时刻如果生命值没有满那么有\( ...
- ZJUT 1423 地下迷宫(期望DP&高斯消元)
地下迷宫 Time Limit:1000MS Memory Limit:32768K Description: 由于山体滑坡,DK被困在了地下蜘蛛王国迷宫.为了抢在DH之前来到TFT,DK必须尽快走 ...
- Codeforces.24D.Broken robot(期望DP 高斯消元)
题目链接 可能这儿的会更易懂一些(表示不想再多写了). 令\(f[i][j]\)表示从\((i,j)\)到达最后一行的期望步数.那么有\(f[n][j]=0\). 若\(m=1\),答案是\(2(n- ...
随机推荐
- codeforces559A--Gerald's Hexagon(计算几何)
A. Gerald's Hexagon time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- Unity3d / 3ds max 模型分享站点
http://www.cgrealm.org/model/ 王国3D模型库 http://www.cgjoy.com/ 游戏特效论坛
- 对Linux文件权限的理解
755,775,777,ugoa 等分别代表什么含义?这些数字是如何得到的? 1.常用的linux文件权限: 444 -r--r--r-- 600 -rw------- 644 -rw-r--r-- ...
- CentOS7下挂载硬盘笔记
CentOS7下挂载硬盘笔记 准备工作 机器:DELL R730 系统:CentOS 7.4.1708 (Core) x86_64 新增硬盘:三星960PRO 关闭服务器加上新硬盘,然后重启 查看硬盘 ...
- linux下c,c++头文件的路径
一. C语言包含的目录: 二. C++包含的目录
- Node.js静态页面展示例子2
例程下载:https://files.cnblogs.com/files/xiandedanteng/nodejsStaticHtmlSample.rar 页面效果: Html页面代码(注意用文本编辑 ...
- 【JavaScript】【PPT】继承的本质
※文件引自OneDrive,有些人可能看不到
- 单例模式 - GCD 、兼容ARC和MRC
单例模式 - GCD .兼容ARC和MRC 单例模式的作用: 1,能够保证在程序执行过程.一个类仅仅有一个实例,并且该实例易于供外界訪问 2,从而方便地控制了实例个数,并节约系统资源 单例模式的使用场 ...
- 51单片机 | 实现SMG12864液晶显示器操作
———————————————————————————————————————————— SMG12864液晶显示器 128*64个点位,可以显示图形或8*4个汉字 - - - - - - - - - ...
- MYSQL数据插入、更新及删除
上文讲到创建数据表,本文介绍create table后的数据插入: 一.通过insert into ...values...插入 insert into tablename (column1,colu ...