二分答案,spfa check就行了。

gb题卡精度。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
const int dx[]={-,,,};
const int dy[]={,,,-}; double L;int n,m;
char mp[][];
int stx,sty,edx,edy; struct node
{
int x,y;
}list[];
bool v[][];
double d[][]; bool check(double kk)
{
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
d[i][j]=999999999.9;
d[stx][sty]=;
memset(v,false,sizeof(v));
v[stx][sty]=true; int head=,tail=;
list[].x=stx;list[].y=sty;
while(head!=tail)
{
int x=list[head].x,y=list[head].y;
for(int i=;i<=;i++)
{
int tx=x+dx[i],ty=y+dy[i];
if(tx>&&tx<=n&&ty>&&ty<=m&&mp[tx][ty]!='#')
{
double dis;
if(x==tx)dis=1.0;
else dis=kk; if(d[tx][ty]>d[x][y]+dis)
{
d[tx][ty]=d[x][y]+dis;
if(v[tx][ty]==false)
{
v[tx][ty]=true;
list[tail].x=tx;list[tail].y=ty;
tail++;if(tail==)tail=;
}
}
}
}
v[x][y]=false;
head++;if(head==)head=;
}
if(d[edx][edy]<L||fabs(d[edx][edy]-L)<=1e-)return true;
return false;
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%lf%d%d",&L,&n,&m);gets(mp[]+);
for(int i=;i<=n;i++)
{
gets(mp[i]+);
for(int j=;j<=m;j++)
if(mp[i][j]=='S') stx=i, sty=j;
else if(mp[i][j]=='E') edx=i, edy=j;
} double l=0.0,r=10.0,ans=;
while(r-l>1e-)
{
double mid=(l+r)/;
if(check(mid)==true)
l=mid+0.0000001, ans=mid;
else
r=mid-0.0000001;
}
printf("%.5lf\n",ans);
}
return ;
}

bzoj2709: [Violet 1]迷宫花园的更多相关文章

  1. 【二分答案】【Heap-Dijkstra】bzoj2709 [Violet 1]迷宫花园

    显然最短路长度随着v的变化是单调的,于是可以二分答案,据说spfa在网格图上表现较差. #include<cstdio> #include<cstring> #include& ...

  2. 二分+最短路判定 BZOJ 2709: [Violet 1]迷宫花园

    BZOJ 2709: [Violet 1]迷宫花园 Sample Input 5 ######### # # # # # # # #S# # ##### # # ## # # # ### ### ## ...

  3. bzoj violet系列 (2708~2725)

    cbh大爷说:写博客不能弃坑. orz cbh 那我就来更新博客了. violet这个系列的题好神啊……出题人好劲啊…… ……怎么最近都在理性愉悦啊…… 另外bzoj400题纪念~ 2708: [Vi ...

  4. bzoj AC倒序

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

  5. 2017.07.07【NOIP提高组】模拟赛B组

    Summary 因为某种无法抗拒的原因,今天没有打比赛,所以也就没有那种心态.今天的题目有状压DP和二分,这套题不难也不简单,适中,适合我这种渣渣来做.在改题时,发现了许多问题.我连欧拉函数的计算都记 ...

  6. [JOY]1143 飘飘乎居士的约会

    题目描述 又是美妙的一天,这天飘飘乎居士要和MM约会,因此他打扮的格外帅气.但是,因为打扮的时间花了太久,离约会的时间已经所剩无几. 幸运的是,现在飘飘乎居士得到了一张nm的地图,图中左上角是飘飘乎居 ...

  7. [JZOJ NOIP2018模拟10.20 B组]

    T1:原根(math) 题目链接: http://172.16.0.132/senior/#contest/show/2532/0 题目: 题解: 一个数m原根的个数是$\phi{(\phi{(m)} ...

  8. C语言动态走迷宫

    曾经用C语言做过的动态走迷宫程序,先分享代码如下: 代码如下: //头文件 #include<stdio.h> #include<windows.h>//Sleep(500)函 ...

  9. BZOJ 2716: [Violet 3]天使玩偶

    2716: [Violet 3]天使玩偶 Time Limit: 80 Sec  Memory Limit: 128 MBSubmit: 1473  Solved: 621[Submit][Statu ...

随机推荐

  1. PHP编译参数configure配置详解(持续更新中)

    编译参数-使用 ./configure -h在源代码目录中,该命令可以查看所有编译参数以及对应的英文解释 编译参数-说明 --prefix=/opt/php //指定 php 安装目录--with-a ...

  2. PHP:验证邮箱合法性

    文章来源:http://www.cnblogs.com/hello-tl/p/7592304.html /** * [verifyPhone description] 效验邮箱号合法性 * @para ...

  3. Python之面向对象新式类和经典类

    Python之面向对象新式类和经典类 新式类和经典类的继承原理: 在Python3中,就只有新式类一种了. 先看Python3中新式类: 类是有继承顺序的: Python的类是可以继承多个类的,也就是 ...

  4. (九)python3 列表生成式

    列表生成式即 List Comprehensions,是 Python 内置的非常简单却强大的可以用来创建 list 的生成式. 要生成 list [1, 2, 3, 4, 5, 6, 7, 8, 9 ...

  5. safepoint与UseCountedLoopSafepoints

    safepoint: JIT编码时,会在代码中所有方法的返回之前,以及所有非counted loop的循环(无界循环)回跳之前放置一个safepoint(counted loop则没有放置safepo ...

  6. 解决EF 4.0 中数据缓存机制

    EF4.0默认开启缓存机制,如果想要禁用缓存机制的话,则须加上一句话:_db.CreateObjectSet().MergeOption = MergeOption.OverwriteChanges; ...

  7. python virtualenv 管理工具 - virtualenvwrapper

    我们使用python virtualenv构建不同的python环境,python3 也加入了virtualenv 模块. virtualenvwrapper 提供了更便捷的 virtualenv环境 ...

  8. openstack -> openinfra

    https://www.openstack.org/assets/software/projectmap/openstack-map.pdf

  9. BNUOJ 5235 Starship Troopers

    Starship Troopers Time Limit: 5000ms Memory Limit: 32768KB This problem will be judged on HDU. Origi ...

  10. Spark 静态内存管理

    作者编辑:杜晓蝶,王玮,任泽 Spark 静态内存管理详解 一. 内容简介 spark从1.6开始引入了动态内存管理模式,即执行内存和存储内存之间可以互相抢占.spark提供两种内存分配模式,即:静态 ...