[bzoj2709][Violet 1]迷宫花园 二分+spfa
来源:互联网 发布:mac 泳道图 工具 编辑:程序博客网 时间:2024/06/08 07:17
2709: [Violet 1]迷宫花园
Time Limit: 5 Sec Memory Limit: 128 MB[Submit][Status][Discuss]
Description
Input
Output
Sample Input
卡二分的sbt
这是A了的
double l = 0.0, r = 10.0;while( r - l > eps ){double mid = ( l + r ) / 2.0;if( spfa( mid ) ) l = mid + eps;else r = mid - eps;}
WA了的while( r - l > eps ){double mid = ( l + r ) / 2.0;if( spfa( mid ) ) ans = l = mid;else r = mid;}
再也不做这种sbt了,浪费我时间#include <algorithm>#include <iostream>#include <cstring>#include <cstdlib>#include <cstdio>#include <bitset>#include <queue>#include <ctime>#include <map>#include <set>#define pa pair < int , int >using namespace std;#define eps 1e-10int T, n, dx[4] = { 0, 0, 1, -1 }, dy[4] = { 1, -1, 0, 0 };int r, c, sx, sy, tx, ty;char a[105][105];double Sum, dis[105][105], ans;queue < pa > q; bool inq[105][105];bool spfa( double dang ){memset( dis, 127, sizeof(dis) );memset( inq, 0, sizeof(inq) );while( !q.empty() ) q.pop();dis[sx][sy] = 0; q.push( make_pair( sx, sy ) ); inq[sx][sy] = 1;while( !q.empty() ){int xx = q.front().first, yy = q.front().second; q.pop(); inq[xx][yy] = 0;for( int k = 0; k < 2; k++ ){int xxx = xx + dx[k], yyy = yy + dy[k];if( xxx > 0 && yyy > 0 && xxx <= r && yyy <= c && a[xxx][yyy] != '#' ){if( dis[xxx][yyy] > dis[xx][yy] + 1.0 ){dis[xxx][yyy] = dis[xx][yy] + 1.0;if( !inq[xxx][yyy] ) q.push( make_pair( xxx, yyy ) ), inq[xxx][yyy] = 1;}}}for( int k = 2; k < 4; k++ ){int xxx = xx + dx[k], yyy = yy + dy[k];if( xxx > 0 && yyy > 0 && xxx <= r && yyy <= c && a[xxx][yyy] != '#' ){if( dis[xxx][yyy] > dis[xx][yy] + dang ){dis[xxx][yyy] = dis[xx][yy] + dang;if( !inq[xxx][yyy] ) q.push( make_pair( xxx, yyy ) ), inq[xxx][yyy] = 1;}}}}return dis[tx][ty] < Sum;}int main(){scanf( "%d", &T );while( T-- ){memset( a, 0, sizeof(a) );scanf( "%lf", &Sum ); scanf( "%d%d\n", &r, &c );for( int i = 1; i <= r; i++ ){gets(a[i] + 1);for( int j = 1; j <= c; j++ ){if( a[i][j] == 'S' ) sx = i, sy = j;if( a[i][j] == 'E' ) tx = i, ty = j;}}double l = 0.0, r = 10.0;while( r - l > eps ){double mid = ( l + r ) / 2.0;if( spfa( mid ) ) ans = l = mid;else r = mid;}printf( "%.5lf\n", ans );}return 0;}
阅读全文
0 0
- BZOJ2709: [Violet 1]迷宫花园 二分+Spfa
- bzoj2709 [Violet 1]迷宫花园 二分+spfa
- [bzoj2709][Violet 1]迷宫花园 二分+spfa
- [BZOJ2709][Violet 1]迷宫花园(二分+spfa)
- [bzoj2709][Violet 1]迷宫花园(二分+spfa)
- bzoj2709 [Violet 1]迷宫花园
- BZOJ2709: [Violet 1]迷宫花园
- 【bzoj2709】 迷宫花园 spfa
- 2709: [Violet 1]迷宫花园
- bzoj 2709: [Violet 1]迷宫花园 (最短路)
- bzoj2709
- jzoj 3522 迷宫花园
- jzoj3522 迷宫花园(bfs)
- 二分+SPFA
- BZOJ2708 [Violet 1]木偶
- BZOJ2708: [Violet 1]木偶
- VIOLET
- 【二分】教主的花园解题报告
- Ubuntu 14.04 解决VNC server 自启动
- nyoj1022 : 取石子(一)(巴什博弈)
- ScalarHandler: 将单个值封装、 例如select count(*),求内容的条数;KeyedHandler:将多条记录封装到一个Map集合的Map集合中。并且外面的Map集合是可以指定的
- CentOS 7 安装 zookeeper
- String类常用方法
- [bzoj2709][Violet 1]迷宫花园 二分+spfa
- linux-0.11中bootsect.s分析
- 基于HTML5的可预览多图片AJAX上传
- 我为什么使用 JavaScript Standard Style(JavaScript 标准编码风格),而且你应该使用
- 内部类
- PHP操作Access类
- HTML 基础知识
- handler
- 在ViewPager和TabLayout连用时,去除ViewPager预加载