完整题面:

设f(i,j)表示路径经过(i,j)这个点的概率,列出方程消元。

但暴力消元的复杂度是$O((nm)^3)$,注意每一次消元只会影响前后m个方程,所以我们可以对于第i行,只存[i-m,i+m]这些系数来进行消元。

时间复杂度$O(nm^3)$

姿势水平UP~

(代码基本抄Claris的)

#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
#define f(x,y) a[x][y-x+m]
#define eps 1e-12 const int N=,M=,dx[]={-,,,},dy[]={,,-,};
char s[N][M];
int n,m,tt,p[N*M],v[N*M];
double d[],a[N*M][M*],g[N*M]; int main() {
scanf("%d%d",&m,&n);
for(int i=;i<;i++) scanf("%lf",&d[i]),d[i]/=;
for(int i=;i<n;i++) scanf("%s",s[i]);
for(int i=;i<m;i++) if(s[][i]=='.') tt++;
for(int i=;i<n;i++) for(int j=;j<m;j++) if(s[i][j]!='X') {
int o=i*m+j,x,y; f(o,o)=;
if(!i) g[o]=./tt;
for(int k=;k<;k++) {
x=i+dx[k],y=j+dy[k];
if(x<||x>=n||y<||y>=m||s[x][y]=='X') f(o,o)-=d[k];
else if(s[x][y]=='.') f(o,x*m+y)-=d[k^];
}
if(s[i][j]=='T') f(o,o)=;
}
for(int i=;i<n*m;i++) {
int l=max(,i-m),r=min(n*m-,i+m),k=-;
for(int j=l;j<=r;j++) if(!v[j]&&fabs(f(j,i))>eps) {k=j; break;}
p[i]=k; if(~k) v[k]=; else continue;
for(int j=k+,x;j<=r;j++) {
double t=f(j,i)/f(k,i);
for(x=i;x<n*m&&x<=k+m;x++) f(j,x)-=f(k,x)*t;
g[j]-=g[k]*t;
}
}
for(int i=n*m-;~i;i--) if(~p[i]) {
int k=p[i],l=max(,i-m),r=min(n*m-,i+m);
for(int j=l;j<=r;j++) if(j^k) g[k]-=f(k,j)*g[j];
g[k]/=f(k,i);
}
for(int i=;i<n;i++) for(int j=;j<m;j++) if(s[i][j]=='T') printf("%.9f\n",g[p[i*m+j]]);
return ;
}

BZOJ4079 [Wf2014]Pachinko的更多相关文章

  1. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  2. [SCOI2015]国旗计划[Wf2014]Surveillance

    [SCOI2015]国旗计划 A国正在开展一项伟大的计划——国旗计划.这项计划的内容是边防战士手举国旗环绕边境线奔袭一圈.这 项计划需要多名边防战士以接力的形式共同完成,为此,国土安全局已经挑选了N名 ...

  3. BZOJ4083 : [Wf2014]Wire Crossing

    WF2014完结撒花~ 首先求出所有线段之间的交点,并在交点之间连边,得到一个平面图. 这个平面图不一定连通,故首先添加辅助线使其连通. 然后求出所有域,在相邻域之间连一条代价为$1$的边. 对起点和 ...

  4. BZOJ 4078: [Wf2014]Metal Processing Plant

    4078: [Wf2014]Metal Processing Plant Time Limit: 100 Sec  Memory Limit: 128 MBSubmit: 86  Solved: 20 ...

  5. BZOJ4078 : [Wf2014]Metal Processing Plant

    设$D(A)\leq D(B)$,从小到大枚举$D(A)$,双指针从大到小枚举$D(B)$. 那么对于权值不超过$D(A)$的边,可以忽略. 对于权值介于$(D(A),D(B)]$之间的边,需要满足那 ...

  6. 【随机化】bzoj4080 [Wf2014]Sensor Network

    #include<cstdio> #include<algorithm> #include<cmath> using namespace std; typedef ...

  7. BZOJ 4078: [Wf2014]Metal Processing Plant [放弃了]

    以后再也不做$World Final$的题了................ 还我下午 bzoj上TLE一次后就不敢交了然后去uva交 Claris太神了代码完全看不懂 还有一个代码uva上竟然WA了 ...

  8. BZOJ4081 : [Wf2014]Skiing

    首先将目标点按$y$坐标从小到大排序. 如果加速度为$0$,那么只要贪心走一遍即可. 否则考虑DP,设$f[i][j]$表示从$i$点以速度$j$出发最多能经过多少个点. 注意到将DP值相同的合并可以 ...

  9. BZOJ4077 : [Wf2014]Messenger

    二分答案,让$A$推迟出发$mid$的时间. 对于每个相邻的时间区间,两个点都是做匀速直线运动. 以$A$为参照物,那么$A$不动,$B$作匀速直线运动. 若线段$B$到$A$的距离不超过$mid$, ...

随机推荐

  1. 关于Android 7.0(API24)相机的问题汇总

    在开发Android项目的时候,我们会用到相机,有些时候只是开发一个普通的扫码,仅仅赋予一下 权限 就好了,但是有些时候是需要拍照和从相册中获取照片的.我们在Android 5.0以及5.0之前调用相 ...

  2. 动手写IL到Lua的翻译器——准备

    文章里的代码粘过来的时候格式有点问题,原因是一开始文章是在订阅号上写的(gamedev101,文末有二维码),不知道为啥贴过来就没了格式,还要手动删行号,就没搞了. 介绍下问题背景: 小说君正在参与的 ...

  3. svn的使用技巧

    就是如果想一个文件在提交的时候不被上传,可以设置忽略这样提交的时候就不会被上传

  4. C 函数指针与回调函数

    函数指针是指向函数的指针变量. 通常我们说的指针变量是指向一个整型.字符型或数组等变量,而函数指针是指向函数. 函数指针可以像一般函数一样,用于调用函数.传递参数. 函数指针变量的声明: #inclu ...

  5. C# 使用 GDI+ 实现添加中心旋转(任意角度)的文字

    这篇文章是 GDI+ 总结系列的第三篇,如果对 GDI+ 的基础使用不熟悉的朋友可以先看第一篇文章<C# 使用 GDI+ 画图>. 需求 需求是要实现给图片添加任意角度旋转的文字,文字的旋 ...

  6. IPv6原理、应用与实践

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯微信技术架构部团队 2017年11月26日,中共中央办公厅和国务院办公厅印发了<推荐互联网协议第六版(IPv6)规模部署行动 ...

  7. jvascript变量提升

    javascript变量提升 首先我们来看两个例子 var a = 1; function test(){ if(!a) var a = 10 alert(a) } test() //结果是10 是不 ...

  8. NOPI实现导入导出泛型List,支持自定义列

    概述 业务上需要自定义列的Excel的导入导出,在网上看了好多资料,很多都是有Bug而且都是支持Excel和DataTable的转换,所以自己总结了一下,应用.NET平台上的NPOI封装了支持自定义列 ...

  9. Java-Maven(六):Eclipse中Maven插件的命令操作

    之前几个章节学习了maven的概念,及maven插件安装后如何创建工程,那么maven工程中是如何使用maven命令呢?本章节将会学习这个话题. 在pom.xml中配置maven命令插件 如果向在ma ...

  10. 复习HTML+CSS(6)

    n  表格和表单的嵌套顺序 n  单行文本域 语法格式:<input type="text" 属性="值"> 常用属性 l  Name:文本框的名字 ...