二分答案,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. HDU - 4544 湫湫系列故事——消灭兔子(优先队列+贪心)

    题目: 最近,减肥失败的湫湫为发泄心中郁闷,在玩一个消灭免子的游戏. 游戏规则很简单,用箭杀死免子即可. 箭是一种消耗品,已知有M种不同类型的箭可以选择,并且每种箭都会对兔子造成伤害,对应的伤害值分别 ...

  2. java IO流 内容整理

    在java中,对数据的输入和输出操作以流的方式进行.(注:对文件的操作用io.File类,但不能对文件中的内容进行操作) 一.IO流的分类: 按数据流的方向不同,可以分为输入流和输出流: 按处理数据的 ...

  3. VMWare NAT网络配置

    1. 打开CMD,输入以下命令 ipconfig -all 2. 设置主机Wi-Fi网络对VMnet8虚拟网卡的网络共享 3. 虚拟机NAT模式配置 4. 配置虚拟机网卡信息 切换到ROOT cd / ...

  4. 十款开发者常用的Chrome插件,让chrome成为开发利器!

    Chrome浏览器无论是作为浏览器市场的NO1还是其强大的跨平台能力以及丰富的扩展插件,一直是许多开发者的首要选择的浏览器.chrome浏览器也因为其丰富的Chrome插件,帮助开发者们在开发流程中极 ...

  5. Python数据结构--链表

    class Node(): def __init__(self, dataval=None): self.dataval = dataval self.nextval = None class SLi ...

  6. Spring核心技术(八)——Spring自动装载的注解

    本文针对自动装载的一些注解进行描述. 基于注解的容器配置 @Required注解 @Required注解需要应用到Bean的属性的setter方法上面,如下面的例子: public class Sim ...

  7. git详细说明

    https://www.cnblogs.com/qcloud1001/p/9796750.html

  8. 【BZOJ4559】成绩比较(组合计数,容斥原理)

    题意: G系共有n位同学,M门必修课.这N位同学的编号为0到N-1的整数,其中B神的编号为0号.这M门必修课编号为0到M- 1的整数.一位同学在必修课上可以获得的分数是1到Ui中的一个整数.如果在每门 ...

  9. 自定义日志工具LogUtil

    package com.pingyijinren.test; import android.util.Log; /** * Created by Administrator on 2016/5/20 ...

  10. Kerberos认证浅析

    1 引言 在希腊神话中Kerberos是守护地狱之门的一条凶猛的三头神犬,而我们在本文中所要介绍的Kerberos认证协议是由美国麻省理工学院(MIT)首先提出并实现的,是该校雅典娜计划的一部分.这个 ...