bzoj1295 最长距离
Description
windy有一块矩形土地,被分为 N*M 块 1*1 的小格子。 有的格子含有障碍物。 如果从格子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
3 3 0
001
001
110
【输入样例二】
4 3 0
001
001
011
000
【输入样例三】
3 3 1
001
001
001
Sample Output
1.414214
【输出样例二】
3.605551
【输出样例三】
2.828427
//Serene
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
using namespace std;
const int maxn=30+5,maxnn=maxn*maxn;
int n,m,T;
bool tu[maxnn];
double ans;int aa;char cc;
int read() {aa=0;cc=getchar();while(cc<'0'||cc>'9') cc=getchar();while(cc>='0'&&cc<='9') aa=aa*10+cc-'0',cc=getchar();return aa;
}int fir[maxnn],nxt[4*maxnn],to[4*maxnn],e=0;
void add(int x,int y) {to[++e]=y;nxt[e]=fir[x];fir[x]=e;to[++e]=x;nxt[e]=fir[y];fir[y]=e;
}double get_dis(int x,int y) {int a1=(x-1)/m+1,b1=(x-1)%m+1;int a2=(y-1)/m+1,b2=(y-1)%m+1;double c1=(double)a2-(double)a1,c2=(double)b2-(double)b1;return sqrt(c1*c1+c2*c2);
}int dis[maxnn],zz[maxnn];
bool vis[maxnn];
void spfa(int st,bool p) {int s=1,t=0,x,y,z;memset(vis,0,sizeof(vis));memset(dis,0x3f3f3f3f,sizeof(dis));vis[st]=1;zz[++t]=st;dis[st]=p;while(s<=t) {x=zz[s%maxnn];//for(y=fir[x];y;y=nxt[y]) {z=to[y];if(dis[x]+tu[z]>T||dis[x]+tu[z]>=dis[z]) continue;dis[z]=dis[x]+tu[z];if(!vis[z]) {vis[z]=1;t++;zz[t%maxnn]=z;//}}s++;vis[x]=0;}for(int i=1;i<=n*m;++i) if(dis[i]<=T) {double ff=get_dis(i,st);if(ff>ans) ans=max(ans,ff);}
}int main() {n=read();m=read();T=read(); int x,z;char y;for(int i=1;i<=n;++i) for(int j=1;j<=m;++j) {y=getchar();while(y<'0'||y>'1') y=getchar();x=(i-1)*m+j;z=tu[x]=y-'0';if(i>1) add(x,x-m);if(j>1) add(x,x-1);}for(int i=1;i<=n;++i) for(int j=1;j<=m;++j) {x=(i-1)*m+j;spfa(x,tu[x]);}printf("%.6lf",ans);return 0;
}
转载于:https://www.cnblogs.com/Serene-shixinyi/p/7517916.html
bzoj1295 最长距离相关推荐
- BZOJ1295 [SCOI2009]最长距离
Description windy有一块矩形土地,被分为 N*M 块 1*1 的小格子. 有的格子含有障碍物. 如果从格子A可以走到格子B,那么两个格子的距离就为两个格子中心的欧几里德距离. 如果从格 ...
- 如何评价LoRa这项应用于低功率长距离场景的物联网传输技术?
大家好,我是无际单片机编程徐工. 我2010年毕业就开始做无线相关的工作,那个时候用的是ASK无线通讯,收发模块都是我们自己做的. 那今年,给我最深刻的就是没完没了地调试无线模块的参数,测试无线通讯距 ...
- DWM1000 长距离模块讨论
蓝点DWM1000 模块已经打样测试完毕,有兴趣的可以申请购买了,更多信息参见 蓝点论坛 正文: DWM1000 作为超宽室内带测距/定位的代表,官方给出的模块标准距离30-50m,而目前X宝上有很多 ...
- 潘建伟团队最新研究成果登上Nature:首次实现1120公里长距离无中继纠缠量子密钥分发...
鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 量子通信,又获里程碑式突破. 这一次,依然来自潘建伟教授团队-- "墨子号"量子科学实验卫星,实现了1120公里长距离无 ...
- 这样一款超低功耗的集成 2.4 GHz Wi-Fi 和支持长距离的 Bluetooth LE 5.0的SOC,你怎么能不爱它?
今天要介绍的这个主角是谁呢?超低功耗的集成 2.4 GHz Wi-Fi 和支持长距离的 Bluetooth LE 5.0的SOC,价格还能对标他的"前辈"单WIFI的ESP8266 ...
- hdu 2196 叶子节点最长距离(树DP)
http://www.cnblogs.com/kuangbin/archive/2012/08/28/2659915.html 求每个节点到叶子节点的最长距离 需要保存每个节点到叶子节点距离的最大值和 ...
- 道路里程桩号标注_2000公里长距离电车远行,逸动EV460对里程焦虑说不
聊起纯电动车型,大多数人首先想到的就是续航问题,近些年来尽管技术在不断进步,但"里程焦虑"的毛病似乎也只是治标不治本.考虑购买新能源车型的消费群体的需求大部分均是经济环保,解决城市 ...
- 华三交换机mode是什么意思_POE交换机150米、长距离250米传输是什么意思?
很多人对POE交换机传输距离一直存在疑惑. 1. 什么是POE POE是Power over Ethernet的缩写,指的是在现有的以太网Cat.5不限基础架构不做任何改动的情况下,在为一些基于IP的 ...
- 光纤收发器长距离的传输过程出现死机的解决方案
光纤收发器是网络通信中必不可少的一种设备,但是,我们在使用过程中难免会遇到各种各样的问题,其中,光纤收发器出现死机可以说是很常见的一种故障,那么,光纤收发器经常会出现死机到底是什么原因,是光纤收发器坏 ...
- bzoj 1295: [SCOI2009]最长距离
题目链接 1295: [SCOI2009]最长距离 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1165 Solved: 619 [Submit ...
最新文章
- Redis5.0之Stream案例应用解读
- 11月3号晚7点中科院南土所梁玉婷报告:土壤微生物功能组学与关键类群识别
- 白话Elasticsearch04- 结构化搜索之使用terms query搜索多个值以及多值搜索结果优化
- CLR Via CSharp读书笔记(26) - 计算限制的异步操作
- lenze变频器怎么更改地址_S7-200 SMART PLC Modbus通信控制 V20变频器
- 选择文字就能选择复选框
- php vo 遍历,thinkPHP简单遍历数组方法分析
- python正则匹配找到所有的浮点数_如何利用Python抓取静态网站及其内部资源
- 【二分法】计蒜客:二分快速幂
- ​七周二次课(5月7日)监控io性能、free命令、ps命令、查看网络状态、linux下抓包...
- 苹果电脑Mac系统如何下载安装谷歌Chrome浏览器
- XSS Challenges stage#12-16 闯关详解
- win10升级助手_win7怎么升级win10?腾讯电脑管家升级win10教程
- Linux中vsftpd服务配置(匿名,用户,虚拟用户)
- Java开发关键技术
- recycler 刷新图片闪烁_android 解决RecyclerView notifyDataSetChanged刷新闪屏问题(图片刷新)...
- 手机连接电脑后,电脑上显示不出来手机的文件夹
- 统一用户认证和单点登录和授权的原理与流程
- 创建带图文的超级菜单(导航菜单)(二)
- 2007 上海找工作