2709: [Violet 1]迷宫花园

Time Limit: 5 Sec  Memory Limit: 128 MB
Submit: 976  Solved: 340
[Submit][Status][Discuss]

Description

Input

Output

Sample Input

5
10.28 9 9
#########
# #
# # # # #
#S# #
##### # #
## # #
# ### ###
##E #
#########
4.67 9 9
#########
# ## ##
### #S# #
# # E ##
# # #####
# ## ###
# ##### #
# # #
#########
39.06 9 9
#########
# #
# # # # #
# E# # #
# # # # #
## ### #
# # #S# #
##### #
#########
24.00 9 9
#########
# ##
# # ## ##
# # ##
###S## E#
### # ##
# # # #
##### # #
#########
25.28 9 9
#########
# S##E# #
# ### # #
# ## #
# ## ###
# # ####
# # # ###
# #
#########

Sample Output

0.41000
4.67000
3.34000
5.00000
1.69000

HINT

Source

POJ 3897 Maze Stretching

实数二分+最短路判定

很水的一道题,注意读数据的时候,空格scanf和cin会自动忽略,用gets去读

#include <bits/stdc++.h>
#define ll long long
#define eps 1e-7
using namespace std;
inline int read(){int x=0;int f=1;char ch=getchar();while(!isdigit(ch)) {if(ch=='-') f=-1;ch=getchar();}while(isdigit(ch)) {x=x*10+ch-'0';ch=getchar();}return x*f;
}
const int MAXN=1e4+10;
struct node{int x,y;
}e[MAXN];
const int dx[4]={0,0,-1,1};
const int dy[4]={-1,1,0,0};
int n,m,T,vis[MAXN],S,E;
char ch[110][110];
double dis[MAXN],L;
typedef pair < double,int > pii;
priority_queue < pii,vector<pii>,greater<pii> > q;
namespace zhangenming{inline int di(int xx,int yy){return (xx-1)*m+yy;}inline void dijsktra(double vv){for(int i=1;i<=n*m;i++){dis[i]=1e30;}memset(vis,0,sizeof(vis));while(!q.empty()) q.pop(); q.push(make_pair(0,S));dis[S]=0;while(!q.empty()){int tn=q.top().second;q.pop();if(vis[tn]) continue;vis[tn]=1;for(int i=0;i<4;i++){if(i>=2){int xx=e[tn].x+dx[i];int yy=e[tn].y+dy[i];if(yy==0||yy==m+1||ch[xx][yy]=='#') continue;if(dis[di(xx,yy)]>dis[tn]+vv){dis[di(xx,yy)]=dis[tn]+vv;q.push(make_pair(dis[di(xx,yy)],di(xx,yy)));}}else{int xx=e[tn].x+dx[i];int yy=e[tn].y+dy[i];if(xx==0||xx==n+1||ch[xx][yy]=='#') continue;if(dis[di(xx,yy)]>dis[tn]+1){dis[di(xx,yy)]=dis[tn]+1;q.push(make_pair(dis[di(xx,yy)],di(xx,yy)));}}}}}void work(){double l=0;double r=10;while((r-l)>eps){double mid=(l+r)*0.5;dijsktra(mid);if((L-dis[E])>-eps) l=mid;else r=mid;}dijsktra(r);if(dis[E]-L<=eps) printf("%.5lf\n",r);else printf("%.5lf\n",l);}void solve(){T=read();while(T--){scanf("%lf",&L);n=read();m=read();char c=getchar();for(int i=1;i<=n;i++){gets(ch[i]+1);for(int j=1;j<=m;j++){if(ch[i][j]=='S') S=di(i,j);if(ch[i][j]=='E') E=di(i,j);}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){e[(i-1)*m+j].x=i;e[(i-1)*m+j].y=j;}}work();}}
}
int main(){using namespace zhangenming;solve();return 0;
}

  

转载于:https://www.cnblogs.com/something-for-nothing/p/8033606.html

BZOJ 2709 Violet 1 迷宫花园相关推荐

  1. [Luogu P4168] [BZOJ 2724] [Violet]蒲公英

    洛谷传送门 BZOJ传送门 题目背景 亲爱的哥哥: 你在那个城市里面过得好吗? 我在家里面最近很开心呢.昨天晚上奶奶给我讲了那个叫「绝望」的大坏蛋的故事的说!它把人们的房子和田地搞坏,还有好多小朋友也 ...

  2. BZOJ 2707: [SDOI2012]走迷宫 [高斯消元 scc缩点]

    2707: [SDOI2012]走迷宫 题意:求s走到t期望步数,\(n \le 10^4\),保证\(|SCC| \le 100\) 求scc缩点,每个scc高斯消元,scc之间直接DP 注意每次清 ...

  3. bzoj 2724[Violet 6]蒲公英

    2724: [Violet 6]蒲公英 Time Limit: 40 Sec  Memory Limit: 512 MB Submit: 2630  Solved: 920 [Submit][Stat ...

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

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

  5. Bzoj 2724: [Violet 6]蒲公英(分块)

    2724: [Violet 6]蒲公英 Time Limit: 40 Sec Memory Limit: 512 MB Description Input 修正一下 l = (l_0 + x - 1) ...

  6. BZOJ 2707: [SDOI2012]走迷宫( tarjan + 高斯消元 )

    数据范围太大不能直接高斯消元, tarjan缩点然后按拓扑逆序对每个强连通分量高斯消元就可以了. E(u) = 1 + Σ E(v) / degree(u) 对拍时发现网上2个程序的INF判断和我不一 ...

  7. bzoj 2707: [SDOI2012]走迷宫(Trajan+高斯消元+Dp)

    2707: [SDOI2012]走迷宫 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 862  Solved: 328 [Submit][Statu ...

  8. bzoj 2724: [Violet 6]蒲公英(分块预处理)

    2724: [Violet 6]蒲公英 Time Limit: 40 Sec  Memory Limit: 512 MB Submit: 2464  Solved: 848 [Submit][Stat ...

  9. BZOJ 2716 Violet 3 天使玩偶

    2716: [Violet 3]天使玩偶 Time Limit: 80 Sec  Memory Limit: 128 MB Submit: 2145  Solved: 928 [Submit][Sta ...

最新文章

  1. 那些对数据实时性要求高的APP后端是怎么做的
  2. linux虚拟网络设备之bridge(桥)(三)
  3. 一梦江湖卡在获取服务器信息,一梦江湖小技巧,不氪金,卡级玩家怎么获取资源提升修为...
  4. 有线节点与无线节点的混合仿真模拟实验
  5. linux下利用valgrind工具进行内存泄露检测和性能分析
  6. mpc 安全多方计算协议_BNC公链 | 不看到数据却能进行计算?一文了解安全多方计算...
  7. HashCode和equal方法
  8. fatal: unable to access 'xxxxxxxxxxxxx':The requested URL returned error: 403
  9. SAP Spartacus Page Layout学习笔记
  10. oracle 共享硬盘主从,oracle dataguard主从切换
  11. uva 10934—— Dropping water balloons
  12. 几个接下来要解决的问题
  13. 路径规划之图规划算法(图片版)
  14. 成为java高手的八大条件
  15. 百色职称计算机,百色报考职称高级
  16. POJ - Rotating Scoreboard(半平面交)
  17. 集体建设用地审批程序:
  18. 鸡兔同笼问题java解决
  19. Unity摄像机对象锁定旋转运镜模拟
  20. 原腾讯副总裁,Google资深研究员吴军:ChatGPT不算新技术革命,带不来什么新机会...

热门文章

  1. mysql查字段的备注_mysql怎么查看字段的备注
  2. mysql导出所有表字段备注
  3. 多层路由器端口映射设置
  4. vue3.0实现标签云(或词云)
  5. 李小龙:超人是这样练成的
  6. python实现查询qq是否在线
  7. [IOT安全][原创]钉钉智能指纹考勤机M1智能硬件漏洞挖掘(一)
  8. 2021/05/05 OJ每日一题 2132: Tmk吃汤饭 python
  9. java基于微信小程序的师生答疑交流平台 uniAPP小程序
  10. ICCV 2021 | 美团“LargeFineFoodAI“研讨会开幕在即,互动有奖