bzoj 1295: [SCOI2009]最长距离 暴力+bfs最短路
题目链接:
http://www.lydsy.com/JudgeOnline/problem.php?id=1295
题解:
对每个点暴力跑一遍bfs,看能够到达的最远位置,这里如果有障碍物则距离为1,如果没有障碍物,则距离为0,用bfs跑距离<=t的所有点并更新答案。
代码:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<utility>
#include<queue>
#include<cmath>
using namespace std; double get_dis(int x,int y,int a,int b){
return sqrt(1.0*(x-a)*(x-a)+1.0*(y-b)*(y-b));
} struct Node{
int x,y,d;
Node(int x,int y,int d):x(x),y(y),d(d){}
Node(){}
bool operator < (const Node& tmp) const{
return d>tmp.d;
}
}; const int maxn=; int mp[maxn][maxn];
int n,m,t;
char str[maxn];
double ans; int d[maxn][maxn],vis[maxn][maxn];
const int dx[]={-,,,};
const int dy[]={,,-,};
void bfs(int sx,int sy,int t){
if(mp[sx][sy]==) t--;
if(t<) return;
memset(d,0x7f,sizeof(d));
memset(vis,,sizeof(vis));
priority_queue<Node> Q;
Q.push(Node(sx,sy,)),d[sx][sy]=,vis[sx][sy]=;
while(!Q.empty()){
int x=Q.top().x,y=Q.top().y;
ans=max(ans,get_dis(sx,sy,x,y));
Q.pop();
for(int i=;i<;i++){
int a=x+dx[i],b=y+dy[i];
if(a<||a>=n||b<||b>=m) continue;
if(vis[a][b]||mp[a][b]+d[x][y]>t) continue;
d[a][b]=d[x][y]+mp[a][b],vis[a][b]=,Q.push(Node(a,b,d[a][b]));
}
}
} int main(){
while(scanf("%d%d%d",&n,&m,&t)==){
for(int i=;i<n;i++){
scanf("%s",str);
for(int j=;j<m;j++){
mp[i][j]=str[j]-'';
}
}
ans=-;
for(int i=;i<n;i++){
for(int j=;j<m;j++){
bfs(i,j,t);
}
}
printf("%.6lf\n",ans);
}
return ;
}
bzoj 1295: [SCOI2009]最长距离 暴力+bfs最短路的更多相关文章
- BZOJ 1295: [SCOI2009]最长距离 spfa
1295: [SCOI2009]最长距离 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1295 Description windy有一块 ...
- bzoj 1295: [SCOI2009]最长距离
题目链接 1295: [SCOI2009]最长距离 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1165 Solved: 619[Submit][ ...
- BZOJ 1295: [SCOI2009]最长距离( 最短路 )
把障碍点看做点(边)权为1, 其他为0. 对于每个点跑spfa, 然后和它距离在T以内的就可以更新答案 ------------------------------------------------ ...
- [BZOJ 1295][SCOI2009]最长距离(SPFA+暴力)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1295 分析:很巧妙的一道spfa从搜索的角度是搜索在所有1中搜索删除哪T个1,对整个图询问,这 ...
- 1295: [SCOI2009]最长距离
1295: [SCOI2009]最长距离 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 960 Solved: 498[Submit][Status ...
- 【BZOJ】1295: [SCOI2009]最长距离(spfa+暴力)
http://www.lydsy.com/JudgeOnline/problem.php?id=1295 咳咳..此题我不会做啊..一开始认为是多源,可是有移除物品的操作,所以不行. 此题的思想很巧妙 ...
- bzoj 1295 1295: [SCOI2009]最长距离
思路:对于每个点出发bfs做一次dp, dp[ i ][ j ][ k ] 表示从枚举的该点能不能经过k个障碍物到达(i , j). #include<bits/stdc++.h> #de ...
- 1295. [SCOI2009]最长距离【最短路】
Description windy有一块矩形土地,被分为 N*M 块 1*1 的小格子. 有的格子含有障碍物. 如果从格子A可以走到格子B,那么两个格子的距离就为两个格子中心的欧几里德距离. 如果从格 ...
- [BZOJ1295][SCOI2009]最长距离 最短路+枚举
1295: [SCOI2009]最长距离 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1683 Solved: 912[Submit][Statu ...
随机推荐
- JSON介绍与JavaScript解析
首先什么是JSON? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 JSON ...
- SQL Server 2000中的完整备份、差异备份操作
在SQL Server 2000中,假定我们拥有一个数据库为:Test, 现在需要它每天19:00自动进行一次备份,并且以后一旦发生数据库错误,我们都可以通过备份文件将数据库恢复到任何一个备份过的时刻 ...
- blogs
http://blogs.msdn.com/b/tess/archive/2008/02/04/net-debugging-demos-information-and-setup-instructio ...
- python基础:os模块中关于文件/目录常用的函数使用方法
Python是跨平台的语言,也即是说同样的源代码在不同的操作系统不需要修改就可以同样实现 因此Python的作者就倒腾了OS模块这么一个玩意儿出来,有了OS模块,我们不需要关心什么操作系统下使用什么模 ...
- AMQ学习笔记 - 20. 使用Apache ActiveMQBrowser监控ActiveMQ
概述 Apache ActiveMQBrowser可以用于查看AMQ中的消息.这里对其使用方法进行简单介绍. 使用介绍 1.下载并解压缩 下载地址:Apache ActiveMQBrowser,当前最 ...
- Linux 伙伴算法简介
本文将简要介绍一下Linux内核中的伙伴分配算法. Technorati 标签: 伙伴算法 算法作用 它要解决的问题是频繁地请求和释放不同大小的一组连续页框,必然导致在已分配 ...
- ABAP OO与ALV结合方式探索(2)
接上篇 一开始设计的BO 类是为了实现功能而实现功能 从类的单一职责的角度而言 先把这个BO对象拆分 这里又有一个需要考虑的点: 如何传递内表数据到ALV 如果引入一个中间变量,数据就会被do ...
- 枪击手机屏幕应用android源码
这款是作者最新的一款应用源码,枪击手机屏幕应用源码,该应用源码比较完整的,应用目前已经上线了一些应用商店了,大家想更深入的了解,可以到一些应用商店下载吧,直接搜索相关的关键字就可以搜到了,或者在下面有 ...
- 常用JS加密编码算法
//#region UTF8编码函数 function URLEncode(Str) { if (Str == null || Str == "") return "&q ...
- 卸载CentOS 5.4自带的OpenJDK,配置新的Java环境
本文CentOS版本为5.4 final,使用图形界面与命令结合的操作方式,由于CentOS 5.4在默认情况下,会安装OpenOffice之类的软件,而这些软件需要Java支持,因此系统会默认安装一 ...