列出$n\times m$个未知量、$n\times m$个方程的方程组进行高斯消元。

注意到每次消元时只会影响前后$m$个方程,故只保存增广矩阵中的这些项,同时只对这些项进行消元即可。

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

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

  

转载于:https://www.cnblogs.com/clrs97/p/6656324.html

BZOJ4079 : [Wf2014]Pachinko相关推荐

  1. BZOJ4079 [Wf2014]Pachinko

    完整题面: 设f(i,j)表示路径经过(i,j)这个点的概率,列出方程消元. 但暴力消元的复杂度是$O((nm)^3)$,注意每一次消元只会影响前后m个方程,所以我们可以对于第i行,只存[i-m,i+ ...

  2. BZOJ 4079 [Wf2014] Pachinko

    Description 宽度为 w 高度为 h 的方格纸,有一些是空的,有一些是洞,有一些 是障碍物.从第一行的空的格子中随机选一个放置一个钢球,分别有 pu,pd, pl, pr 的概率上下左右移动 ...

  3. POJ 3095 Linear Pachinko 字符串模拟

    http://poj.org/problem?id=3095 简单字符串模拟 Linear Pachinko Time Limit:1000MSMemory Limit:65536K Descript ...

  4. BZOJ4076 : [Wf2014]Maze Reduction

    设$f[i][j][k]$表示从房间$j$的第$k$扇门进去探索不超过$i$步的情况. 对于$0$步的情况,可以用每个房间的度数来表示. 否则可以绕着那个房间走一圈,将所有情况依次hash来表示. 最 ...

  5. Gym 101221I [WF2014]Sensor Network (二分图匹配)

    题目链接 https://codeforces.com/gym/101221/ 题解 又是一道看了题解的作业题. 这是一个最大团(或者补图上的最大独立集)问题,而二分图最大独立集是可以做的,因此可以考 ...

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

    题目描述 魔法炮来到了帝都,除了吃特色菜之外,还准备去尝一尝著名的北京烤鸭.帝都一共有n(1<=1<=100)个烤鸭店,可以看成是二维平面内的点.不过由于魔法炮在吃烤鸭之前没有带钱,所以吃 ...

  7. poj 3095 Linear Pachinko 模拟水题

    题意: 给一个字符串,求小球随机放在上面进洞或到达两边之外的期望. 分析 水题,直接模拟. 代码: //poj 3095 //sep9 #include <iostream> using ...

  8. poj 3095 Linear Pachinko

    #include<iostream> //水题#include<string>using namespace std;int main(){string str;int i,j ...

  9. POJ 3095 Linear Pachinko 笔记

    二维游戏,小球从高处随机落在凹凸不平的地面上,求小球掉到洞中或从端点离开的概率.字符 / 和 \ 表示斜坡,小球落在斜坡上会向一个方向移动:字符 | 表示墙:字符 _ 表示平面,小球落在平面上不移动: ...

最新文章

  1. transformer在CV领域超越了CNN
  2. 博易大师 行情服务器文件,博易大师目录
  3. NLP:基于textrank4zh库对文本实现提取文本关键词、文本关键短语和文本摘要
  4. Android简易音乐播放器实现代码
  5. 登录不上_《盗贼之海》登录不上?还在傻傻等待,快来让我教教你
  6. 李航《统计学习方法》笔记
  7. mvc Filters 过滤器
  8. list 和 iterate
  9. Maven工程解决pom依赖红色波浪线报错
  10. [转载] python中if嵌套语句_Python的if语句怎么嵌套
  11. TF-tf.keras.layers.Dropout
  12. NPDP是什么考试?产品经理必知
  13. html如何转换为opml,使用并解析 OPML 格式的订阅列表来转移自己的 RSS 订阅(解析篇)...
  14. 伊利诺伊计算机专业本科好入吗,伊利诺伊大学香槟分校本科有计算机专业吗?...
  15. 和弦笔记:和弦组成音/和弦命名规律/sus和add的区别
  16. Microsoft Visio 文本框上标或下标
  17. 将XP SP3集成到Windows XP安装光盘
  18. 简单几步实现网络音乐播放器(Python爬虫版百度FM)
  19. AD 绘图专题:无法切换中间层、无法中间层走线
  20. 华为HiLink 云云对接 后台开发的一些细节和坑

热门文章

  1. 《华为机试》刷题之HJ58 输入n个整数,输出其中最小的k个
  2. 【AIOT】Haptics Contributes To Contactless HCI
  3. 抖音春晚撒了12亿红包,这钱花的值不值?
  4. 【2018慢性病与信息大会】孔飞:信息交互在智能健康中的应用
  5. 《求医不如求己》1,2,3全集下载(附人体穴位图)
  6. html字体自动放大,让用户自己控制网页字体的大小的css书写方法
  7. Hive系列之HSQL转换成MapReduce过程
  8. flexible.js在华某为手机上使用rem时,页面宽度超出手机屏幕宽度
  9. QScrollBar纯色美化样式表【vertical部分】
  10. 在Node js中实现任务调度与执行