hdu2262 高斯消元
题目:有一个地图,一个人从某个点出发,问走到花园的期望步数为多少
设某点的期望步数为Ei。
那么目标的Ei=0。
Ei=(Enext1+Enext2……Enextk)/k+1。
为什么是这个公式 因为 如果 Ei-1的期望应该等于所有从Ei出发的点的期望总和
bfs完 套一个高斯消元就ok了
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <string.h>
#include <cmath>
#include <queue>
using namespace std;
#define eps 1e-9
const int MAXN=;
double a[MAXN][MAXN],x[MAXN];//方程的左边的矩阵和等式右边的值,求解之后x存的就是结果
int equ,var;//方程数和未知数个数
int Gauss(int cequ, int cvar)
{
equ=cequ; var=cvar;
int i,j,k,col,max_r;
for(k=,col=;k<equ&&col<var;k++,col++)
{
max_r=k;
for(i=k+;i<equ;i++)
if(fabs(a[i][col])>fabs(a[max_r][col]))
max_r=i;
if(fabs(a[max_r][col])<eps)continue;
if(k!=max_r)
{
for(j=col;j<var;j++)
swap(a[k][j],a[max_r][j]);
swap(x[k],x[max_r]);
}
x[k]/=a[k][col];
for(j=col+;j<var;j++)a[k][j]/=a[k][col];
a[k][col]=;
for(i=;i<equ;i++)
if(i!=k)
{
x[i]-=x[k]*a[i][col];
for(j=col+;j<var;j++)a[i][j]-=a[k][j]*a[i][col];
a[i][col]=;
}
}
return ;
}
char str[][];
bool falg[][];
int dx[]={,,,-};
int dy[]={,-,,};
void bfs(int n,int m)
{
queue<int>Qy,Qx;
memset(falg,false,sizeof(falg));
while(!Qy.empty())Qy.pop();
while(!Qx.empty())Qx.pop();
for(int i=; i<n; i++)
for(int j=; j<m; j++)
if(str[i][j]=='$'){
falg[i][j]=true;
Qx.push(i);
Qy.push(j);
} while(!Qy.empty()){
int ux=Qx.front();
int uy=Qy.front();
Qx.pop();
Qy.pop();
for(int i=; i<; i++)
{
int tx=ux+dx[i];
int ty=uy+dy[i];
if(tx>=&&ty>=&&tx<n&&ty<m&&str[tx][ty]!='#'&&falg[tx][ty]==false){
falg[tx][ty]=true;
Qy.push(ty);
Qx.push(tx);
}
}
}
}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)==){
for(int i=; i<n; i++){
scanf("%s",str[i]);
}
memset(a,,sizeof(a));
memset(x,,sizeof(x));
bfs(n,m);
int sx=-,sy=-;
for(int i=; i<n; i++)
for(int j=; j<m; j++)
{ if(str[i][j]=='#')continue;
int cnt=;
if(str[i][j]=='$'){
a[i*m+j][i*m+j]=;
x[i*m+j]=;
continue;
}
if(str[i][j]=='@'){
sx=i; sy=j;
}
for(int k=; k<; k++){
int tx=i+dx[k];
int ty=j+dy[k];
if(tx>=&&ty>=&&tx<n&&ty<m&&str[tx][ty]!='#'&&falg[tx][ty]){
a[i*m+j][tx*m+ty]=-;
cnt++;
}
}
a[i*m+j][i*m+j]=cnt;
x[i*m+j]=cnt;
}
if(sx!=-&&sy!=-&&falg[sx][sy]&&Gauss(n*m,n*m)){
printf("%.6lf\n",x[sx*m+sy]);
}else{
puts("-1");
}
}
return ;
}
hdu2262 高斯消元的更多相关文章
- HDU2262;Where is the canteen(高斯消元+期望)
传送门 题意 给出一张图,LL从一个点等概率走到上下左右位置,询问LL从宿舍走到餐厅的步数期望 分析 该题是一道高斯消元+期望的题目 难点在于构造矩阵,我们发现以下结论 设某点走到餐厅的期望为Ek 1 ...
- 【BZOJ-3143】游走 高斯消元 + 概率期望
3143: [Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2264 Solved: 987[Submit][Status] ...
- 【BZOJ-3270】博物馆 高斯消元 + 概率期望
3270: 博物馆 Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 292 Solved: 158[Submit][Status][Discuss] ...
- *POJ 1222 高斯消元
EXTENDED LIGHTS OUT Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9612 Accepted: 62 ...
- [bzoj1013][JSOI2008][球形空间产生器sphere] (高斯消元)
Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧 ...
- hihoCoder 1196 高斯消元·二
Description 一个黑白网格,点一次会改变这个以及与其连通的其他方格的颜色,求最少点击次数使得所有全部变成黑色. Sol 高斯消元解异或方程组. 先建立一个方程组. \(x_i\) 表示这个点 ...
- BZOJ 2844 albus就是要第一个出场 ——高斯消元 线性基
[题目分析] 高斯消元求线性基. 题目本身不难,但是两种维护线性基的方法引起了我的思考. void gauss(){ k=n; F(i,1,n){ F(j,i+1,n) if (a[j]>a[i ...
- SPOJ HIGH Highways ——Matrix-Tree定理 高斯消元
[题目分析] Matrix-Tree定理+高斯消元 求矩阵行列式的值,就可以得到生成树的个数. 至于证明,可以去看Vflea King(炸树狂魔)的博客 [代码] #include <cmath ...
- UVALive 7138 The Matrix Revolutions(Matrix-Tree + 高斯消元)(2014 Asia Shanghai Regional Contest)
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=6 ...
随机推荐
- 转:jquery的$(function(){})和$(document).ready(function(){}) 的区别
原文链接:https://www.cnblogs.com/slyzly/articles/7809935.html [转载]jquery的$(function(){})和$(document).rea ...
- DER、CRT、CER、PEM格式的证书及转换
一.证书和编码 X.509证书,其核心是根据RFC 5280编码或数字签名的数字文档. 实际上,术语X.509证书通常指的是IETF的PKIX证书和X.509 v3证书标准的CRL 文件,即如RFC ...
- 机器Coding For WinForm
declare @objname varchar(90)='AutoProjectModel'declare @modelns varchar(90)='ACL.Models'declare @dpc ...
- 前端 HTML 标签嵌套规则
标签嵌套规则 块元素可以包含内联元素或某些块元素,但内联元素却不能包含块元素,它只能包含其它的内联元素,例如: <div><div></div><h1> ...
- docker+mysql基本搭建过程
查询镜像 [root@bms-e4e3 ~]# docker search mysql INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.i ...
- vue-自定义pc端键盘-动画
<template> <div class="keyboard"> <div class="keyboard_key"> & ...
- [vue]vue路由篇vue-router
spa单页开发及vue-router基础: https://www.cnblogs.com/iiiiiher/p/9034496.html url两种传参方式 query: $route.query ...
- HTTPS流程
我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取.所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议. HTTPS简介 HTTPS其实是有两部分组成:HTTP + SSL ...
- Centos 7 设置ssh只允许特定用户从指定的IP登录
1.编辑文件 /etc/ssh/sshd_config vi /etc/ssh/sshd_config 2.root用户只允许在如下ip登录AllowUsers root@203.212.4.117A ...
- xcode 报错Failed to load project at xxxx ,incompatible project version
错误原因: 由于工程是低版本的Xcode建立的,在使用高版本的Xcode打开时会出现编译不了工程. 解决方法: 鼠标右击.xcodeproj文件 —>显示包内容 —>打开project.p ...