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 ...
随机推荐
- spring Boot 不认Mapper.xml
很久以前的笔记了,大约就是用Generatro工具自动生成代码的时候,springboot找不到mapper.xml 之前,由于用mybatis-generator自动生成了entity,dao,ma ...
- Tomcat:Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
可能原因一: 在本地tomcat启动正常并且访问正常的项目放在服务器上tomcat报以上错误. 本地tomcat为7.0.68,服务器上为7.0.86 错误原因:服务器tomcat版本过高. 解决办法 ...
- Go:二分查找
package main import "fmt" func BinarySearch(arr *[5]int, leftIndex int, rightIndex int, fi ...
- mac 解决mysql启动不了
mac升级了mysql,没有替换原来的链接的情况下, 启动mysql restart 会失败 解决方法,找到mysql真正的安装目录 mysql.server start
- day21 04 三级菜单
day21 04 三级菜单 1.使用递归调用的方法 整体代码类型比较简单如下: menu={'北京':{'海淀':{'a':{},'h':{},'c':{}},'昌平':{'沙河':{},'天通苑': ...
- HDU-1083Courses,二分图模板题!
Courses ...
- [Oracle, MySQL] Oracle通过dblink连接MySQL
http://blog.csdn.net/dbanote/article/details/10488581 版权声明:本文为博主原创文章,未经博主允许不得转载. 业务上有这么一个需求,需要把Oracl ...
- codeforces 88E Interesting Game
题目大意: 两个好朋友再将一堆物品分堆,每次都将一堆物品分成数量连续的至少两个堆,直到一个人不能分堆为输 第一次做博弈问题,看了百度文库的http://wenku.baidu.com/link?url ...
- acm 一年总结
首先是大一的一段简短历史,和其他人不太一样,刚上大一的我等于是刚刚接触电脑,开始下载程序啦,安装系统了,电脑出个小问题啦自己都不会解决,然后大一还开了一门叫做c语言的课程,顿时傻逼了,当时也不用功,大 ...
- poj 1456
#include<stdio.h> #include<string.h> #include<stdlib.h> #define N 10010 #define in ...