bzoj2709: [Violet 1]迷宫花园
二分答案,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]迷宫花园的更多相关文章
- 【二分答案】【Heap-Dijkstra】bzoj2709 [Violet 1]迷宫花园
显然最短路长度随着v的变化是单调的,于是可以二分答案,据说spfa在网格图上表现较差. #include<cstdio> #include<cstring> #include& ...
- 二分+最短路判定 BZOJ 2709: [Violet 1]迷宫花园
BZOJ 2709: [Violet 1]迷宫花园 Sample Input 5 ######### # # # # # # # #S# # ##### # # ## # # # ### ### ## ...
- bzoj violet系列 (2708~2725)
cbh大爷说:写博客不能弃坑. orz cbh 那我就来更新博客了. violet这个系列的题好神啊……出题人好劲啊…… ……怎么最近都在理性愉悦啊…… 另外bzoj400题纪念~ 2708: [Vi ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- 2017.07.07【NOIP提高组】模拟赛B组
Summary 因为某种无法抗拒的原因,今天没有打比赛,所以也就没有那种心态.今天的题目有状压DP和二分,这套题不难也不简单,适中,适合我这种渣渣来做.在改题时,发现了许多问题.我连欧拉函数的计算都记 ...
- [JOY]1143 飘飘乎居士的约会
题目描述 又是美妙的一天,这天飘飘乎居士要和MM约会,因此他打扮的格外帅气.但是,因为打扮的时间花了太久,离约会的时间已经所剩无几. 幸运的是,现在飘飘乎居士得到了一张nm的地图,图中左上角是飘飘乎居 ...
- [JZOJ NOIP2018模拟10.20 B组]
T1:原根(math) 题目链接: http://172.16.0.132/senior/#contest/show/2532/0 题目: 题解: 一个数m原根的个数是$\phi{(\phi{(m)} ...
- C语言动态走迷宫
曾经用C语言做过的动态走迷宫程序,先分享代码如下: 代码如下: //头文件 #include<stdio.h> #include<windows.h>//Sleep(500)函 ...
- BZOJ 2716: [Violet 3]天使玩偶
2716: [Violet 3]天使玩偶 Time Limit: 80 Sec Memory Limit: 128 MBSubmit: 1473 Solved: 621[Submit][Statu ...
随机推荐
- C++命名空间、标准库(std,全局命名空间)
背景 别人遇到的问题: C++ 全局变量不明确与 using namespace std 冲突 我遇到的问题与他相似,函数调用冲突 using namespace std; class compare ...
- [kuangbin带你飞]专题四 最短路练习
对于最短路,我主要使用的就是dijkstra,Floyd,SPFA这三个算法.先来介绍一下这三个算法. 1. dijkstra算法.它适用于边权为正的情况,它是单源最短路,就是从单个源点出发到所有的结 ...
- Vue实例方法之事件的实现
开始 这段时间一直在看vue的源码,源码非常多和杂,所以自己结合资料和理解理出了一个主线,然后根据主线去剥离其他的一些知识点,然后将各个知识点逐一学习.这里主要是分析的Vue事件处理的实现. 正文 一 ...
- rbac组件之数据库设计(一)
rbac是基于角色的权限设计,一共包含六张表,具体的表设计如下: from django.db import models class Menu(models.Model): "" ...
- <mongoose>……find与findOne的区别……//
mongoose中的 find 和 findOne 都是用来查找指定表的数据的 find指的是查找指定表的所有数据,返回的是数组 User.find().then((result)=>{ con ...
- Apollo源码解析看一文就够
对于配置中心我们先抛出问号三连,什么是配置中心?为什么要用配置中心?配置中心怎么用? 笔者说说自己理解的配置中心,个人观点的十六字 消息存储 消息推送 环境隔离 灰度发布 今天我们先来看Apollo配 ...
- postman工具的应用实战(二)
在接口测试工具中,最好的应该是soapui,jmeter,postman,但是soapui需要安装和破解,当然也是有破解版的,但是不够灵活,jmeter工具 做接口测试还是性能测试,功能测试,都是一个 ...
- LaTex/Overleaf使用笔记
1. 添加网页引用 @misc{ r1, author = "Wikipedia", title = "Binary decision diagram --- { ...
- 7-14 电话聊天狂人(25 分)(Hash表基本操作)
7-14 电话聊天狂人(25 分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤105),为通话记录条数.随后N行,每行给出一条通话记录.简单 ...
- Linux下汇编语言学习笔记30 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...