【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- ...
随机推荐
- Qt中重绘制窗口方法:
void CircleWidget::paintEvent(QPaintEvent * event) { QPainter painter(this); int wight = this->wi ...
- Hibernate分页功能数据重复问题
今天遇到一个很憋屈的问题那就是hibernate分页查询中出现重复数据,本来一直没有在意,以为是数据问题,但是一查程序和数据都没有问题,继续深入查看,找到问题了就是order By 时出的问题,唉.. ...
- 数据库字段名称转java字段名称
/** * * @Title: changeToJavaFiled * @Description: TODO(将数据库中带下划线的字段转换为Java常用的驼峰字段) * @param @param f ...
- python解析json文件报错No JSON object could be decoded
2017-04-25 可用Nodepad++将json文件打开并以UTF8无BOM格式保存.
- Android开发Tips(2)
欢迎Follow我的GitHub, 关注我的CSDN. 我会介绍关于Android的一些有趣的小知识点. 上一篇. 1. Dagger2的开发顺序 Module -> Component -&g ...
- elasticsearch 基础性操作
1 基础概念 Elasticsearch是一个近实时的系统,从你写入数据到数据可以被检索到,一般会有1秒钟的延时.Elasticsearch是基于Lucene的,Lucene的读写是两个分开的句柄,往 ...
- MySQL高可用解决方案MMM
一.MMM简介: MMM即Multi-Master Replication Manager for MySQL:mysql多主复制管理器,基于perl实现,关于mysql主主复制配置的监控.故障转移和 ...
- 跟踪运行时错误 vue
如果在组件渲染时出现运行错误,错误将会被传递至全局 Vue.config.errorHandler 配置函数 (如果已设置).利用这个钩子函数来配合错误跟踪服务是个不错的主意.比如 Sentry,它为 ...
- E - Hangover(1.4.1)
Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit cid=1006#sta ...
- 利用nginx搭建tomcat集群
1.tomcat集群 利用nginx对请求进行分流,将请求平均的分给不同的tomcat去处理,减少单个tomcat的负载量,提高tomcat的响应速度. 2.创建多个tomcat服务器(同一个服务器上 ...