[SCOI2009]最长距离
Description
windy有一块矩形土地,被分为 NM 块 11 的小格子。 有的格子含有障碍物。 如果从格子A可以走到格子B,那么两个格子的距离就为两个格子中心的欧几里德距离。 如果从格子A不可以走到格子B,就没有距离。 如果格子X和格子Y有公共边,并且X和Y均不含有障碍物,就可以从X走到Y。 如果windy可以移走T块障碍物,求所有格子间的最大距离。 保证移走T块障碍物以后,至少有一个格子不含有障碍物。
Input
输入文件maxlength.in第一行包含三个整数,N M T。 接下来有N行,每行一个长度为M的字符串,'0'表示空格子,'1'表示该格子含有障碍物。
Output
输出文件maxlength.out包含一个浮点数,保留6位小数。
Sample Input 1
3 3 0
001
001
110
Sample Output 1
1.414214
Sample Output 2
3.605551
Sample Input 2
4 3 0
001
001
011
000
Sample Output 3
2.828427
Sample Input 3
3 3 1
001
001
001
HINT
20%的数据,满足 1 <= N,M <= 30 ; 0 <= T <= 0 。 40%的数据,满足 1 <= N,M <= 30 ; 0 <= T <= 2 。 100%的数据,满足 1 <= N,M <= 30 ; 0 <= T <= 30 。
N,M很小,我们可以直接跑N×M次SPFA,求出任意两点之间经过最少障碍数,然后\(N^2\)枚举,判断障碍数,直接统计答案
/*program from Wolfycz*/
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define inf 0x7f7f7f7f
#define sqr(x) ((x)*(x))
using namespace std;
typedef long long ll;
typedef unsigned int ui;
typedef unsigned long long ull;
inline char gc(){static char buf[1000000],*p1=buf,*p2=buf;return p1==p2&&(p2=(p1=buf)+fread(buf,1,1000000,stdin),p1==p2)?EOF:*p1++;
}
inline int frd(){int x=0,f=1;char ch=gc();for (;ch<'0'||ch>'9';ch=gc()) if (ch=='-') f=-1;for (;ch>='0'&&ch<='9';ch=gc()) x=(x<<1)+(x<<3)+ch-'0';return x*f;
}
inline int read(){int x=0,f=1;char ch=getchar();for (;ch<'0'||ch>'9';ch=getchar()) if (ch=='-') f=-1;for (;ch>='0'&&ch<='9';ch=getchar()) x=(x<<1)+(x<<3)+ch-'0';return x*f;
}
inline void print(int x){if (x<0) putchar('-'),x=-x;if (x>9) print(x/10);putchar(x%10+'0');
}
const int N=30;
const int dx[4]={-1,1,0,0};
const int dy[4]={0,0,-1,1};
int dist[N+10][N+10][N+10][N+10];
int n,m,T;
struct S1{int x,y;void insert(int _x,int _y){x=_x,y=_y;}
}h[N*N+10];
char map[N+10][N+10];
bool vis[N+10][N+10];
bool in_map(int x,int y){return x>0&&x<=n&&y>0&&y<=m;}
void SPFA(int x,int y,int dis[N+10][N+10]){memset(vis,0,sizeof(vis));h[1].insert(x,y),dis[x][y]=(map[x][y]=='1'),vis[x][y]=1;int head=0,tail=1;while (head!=tail){if (++head>N*N) head=1;int Nx=h[head].x,Ny=h[head].y;for (int k=0;k<4;k++){int tx=Nx+dx[k],ty=Ny+dy[k];if (in_map(tx,ty)&&dis[tx][ty]>dis[Nx][Ny]+(map[tx][ty]=='1')){dis[tx][ty]=dis[Nx][Ny]+(map[tx][ty]=='1');if (!vis[tx][ty]){if (++tail>N*N) tail=1;h[tail].insert(tx,ty);vis[tx][ty]=1;}}}vis[Nx][Ny]=0;}
}
int main(){n=read(),m=read(),T=read();memset(dist,63,sizeof(dist));for (int i=1;i<=n;i++) scanf("%s",map[i]+1);for (int i=1;i<=n;i++)for (int j=1;j<=n;j++)SPFA(i,j,dist[i][j]);double Ans=0;for (int ox=1;ox<=n;ox++)for (int oy=1;oy<=m;oy++)for (int ex=1;ex<=n;ex++)for (int ey=1;ey<=m;ey++)if (dist[ox][oy][ex][ey]<=T)Ans=max(Ans,sqrt(sqr(ex-ox)+sqr(ey-oy)));printf("%.6lf\n",Ans);return 0;
}
转载于:https://www.cnblogs.com/Wolfycz/p/9993650.html
[SCOI2009]最长距离相关推荐
- bzoj 1295: [SCOI2009]最长距离
题目链接 1295: [SCOI2009]最长距离 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1165 Solved: 619 [Submit ...
- BZOJ 1295: [SCOI2009]最长距离 spfa
1295: [SCOI2009]最长距离 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1295 Description windy有一块 ...
- bzoj 1295: [SCOI2009]最长距离(SPFA)
1295: [SCOI2009]最长距离 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1697 Solved: 919 [Submit][Sta ...
- SCOI2009 最长距离
洛谷 BZOJ 分析 图论题.直接 \(dfs\) 加一点剪枝就能过了. 代码 #include <cmath> #include <cstdio> #include < ...
- BZOJ1295 [SCOI2009]最长距离
Description windy有一块矩形土地,被分为 N*M 块 1*1 的小格子. 有的格子含有障碍物. 如果从格子A可以走到格子B,那么两个格子的距离就为两个格子中心的欧几里德距离. 如果从格 ...
- B1295 [SCOI2009]最长距离 最短路
就是一道最短路的裸题,直接跑spfa就行了.(spfa死了) 最后在答案处判断是否障碍物太多,然后就直接找最大值就行. (数据特别水,我错误算法60) 题干: Descriptionwindy有一块矩 ...
- 【水】【SCOI】 精简题解
第二弹 [SCOI2009]生日快乐 搜索.递归划分问题. [SCOI2009]游戏 记忆化搜索.枚举素因子,DP. [SCOI2009]windy数 数位DP,分块统计. [SCOI2009]最长距 ...
- OI 刷题记录——每周更新
每周日更新 2016.05.29 UVa中国麻将(Chinese Mahjong,Uva 11210) UVa新汉诺塔问题(A Different Task,Uva 10795) NOIP2012同余 ...
- BZOJ ac100题存档
不知不觉AC100题了,放眼望去好像都是水题.在这里就做一个存档吧(特别感谢各位大神尤其是云神http://hi.baidu.com/greencloud和丽洁姐http://wjmzbmr.com/ ...
最新文章
- Android 导致OOM的常见原因
- VScode 乱装插件环境破坏踩坑自我反思总结
- 8080端口被占用的解决方案(其它端口同理)
- Eclipse(properties)插件:PropertyEditor在线安装
- MySQL安装教程,包含所有平台(图解)
- 的训练过程_【能力模式】能力培养是一个训练过程,掌握三个要点,一个诀窍...
- javahost(JVM虚拟DNS)解决hosts程序中hosts配置问题
- WPF框架教程 | 从0到1:使用Caliburn.Micro(WPF和MVVM)开发简单的计算器
- python列表姓氏_python数据分析实例(六) 中国姓氏数据
- Yann LeCun最新访谈:能量模型是通向自主人工智能系统的起点
- 9月计算机一级报名入口,北京市2018年9月计算机一级报名时间|网上报名入口【已正式开通】...
- swiper实现触摸滑动
- 前置仓没活路?盒马mini要做行业终极目标还为时尚早
- linux试密码3次则屏蔽ip,linux centos封锁多次ssh密码错误的主机IP
- 西门子uss通讯实例_西门子plc1200系列的功能特点有哪些?
- java 设置组件填充_Java学习笔记(三)Java2D组件
- OSChina 周六乱弹 —— 我媳妇是条蛇
- 百度SEO全自动百度挂机循环提交工具(MIP 主动推送)泛目录专用
- 如何管理NVivo的查询结果
- BZOJ 1127: [POI2008]KUP 最大子矩阵