bzoj1295
考虑到这道题n,m都很小,我们考虑先穷举起点i
下面我们要做的是找出移走k个障碍后,点i所能到的最大距离
我们可以把这个问题转化为判定性问题
对于一对点i,j,如果他们之间存在一条路径,障碍数(包括起点终点)小于k,那么这两个点的点间距就是可行间距
也就是说,我们对于每个起点,我们只要做一遍最短路径,然后穷举找到最大可行间距即可(因为图的边数较少)
const dx:array[..] of integer=(,,-,);
dy:array[..] of integer=(,-,,);
type node=record
point,len,next:longint;
end; var a,num:array[..,..] of longint;
p,d:array[..] of longint;
edge:array[..] of node;
q:array[..] of longint;
v:array[..] of boolean;
t,h,i,j,k,n,m,x,y:longint;
ans:double;
s:string; function max(a,b:double):double;
begin
if a>b then exit(a) else exit(b);
end; function calc(x1,y1,x2,y2:longint):double;
begin
exit(sqrt(sqr(x1-x2)+sqr(y1-y2)));
end; procedure add(x,y,c:longint);
begin
inc(h);
edge[h].point:=y;
edge[h].len:=c;
edge[h].next:=p[x];
p[x]:=h;
end; procedure spfa(st:longint);
var f,r,x,y,i:longint;
begin
f:=;
r:=;
q[]:=st;
while f<=r do
begin
x:=q[f];
v[x]:=false;
i:=p[x];
while i<>- do
begin
y:=edge[i].point;
if d[y]>d[x]+edge[i].len then
begin
d[y]:=d[x]+edge[i].len;
if not v[y] then
begin
inc(r);
q[r]:=y;
v[y]:=true;
end;
end;
i:=edge[i].next;
end;
inc(f);
end;
end; begin
fillchar(p,sizeof(p),);
readln(n,m,t);
for i:= to n do
begin
readln(s);
for j:= to m do
begin
a[i,j]:=ord(s[j])-;
inc(k);
num[i,j]:=k;
end;
end;
for i:= to n do
for j:= to m do
for k:= to do
begin
x:=i+dx[k];
y:=j+dy[k];
if num[x,y]> then add(num[i,j],num[x,y],a[x,y])
end; for i:= to n do
for j:= to m do
begin
fillchar(v,sizeof(v),false);
v[num[i,j]]:=true;
for k:= to n*m do
d[k]:=;
d[num[i,j]]:=a[i,j];
spfa(num[i,j]);
for k:= to n*m do
if d[k]<=t then
ans:=max(ans,calc(i,j,(k-) div m+,(k-) mod m+));
end;
writeln(ans::);
end.
bzoj1295的更多相关文章
- BZOJ1295 [SCOI2009]最长距离 最短路 SPFA
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1295 题意概括 有一块矩形土地,被分为 N*M 块 1*1 的小格子. 有的格子含有障碍物. 如果 ...
- 【BZOJ1295】[SCOI2009]最长距离(最短路)
[BZOJ1295][SCOI2009]最长距离(最短路) 题面 BZOJ 洛谷 题解 这题很妙啊. 我们枚举一个点,只需要考虑到他的最远点就行了,显然只需要考虑一个点即可.那么这两个点之前联通的最小 ...
- bzoj1295: [SCOI2009]最长距离
bfs最短路. 写的真丑... #include<cstdio> #include<algorithm> #include<cstring> #include< ...
- 【spfa】bzoj1295 [SCOI2009]最长距离
题意:给你一个n*m的点阵.有些点是障碍,求一个欧几里得距离最大的点对(A,B),使得在移走的障碍≤T的情况下,可以从A走到B. 建图,跑n*m次spfa,求出从 每个点 出发到 其他所有点 的 经过 ...
- [BZOJ1295][SCOI2009]最长距离 最短路+枚举
1295: [SCOI2009]最长距离 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1683 Solved: 912[Submit][Statu ...
- 题解 [BZOJ1295][SCOI2009] 最长距离
题面 解析 \(n\)只有\(30\)可以直接枚举每个矩形, 判断他们的左上角到右下角或右上角到左上角的最短路是否小于\(T\). 最短路可以用\(dijkstra\). 一开始想用\(DP\)写最短 ...
- bzoj1295 最长距离
Description windy有一块矩形土地,被分为 N*M 块 1*1 的小格子. 有的格子含有障碍物. 如果从格子A可以走到格子B,那么两个格子的距离就为两个格子中心的欧几里德距离. 如果从格 ...
- [转载]hzwer的bzoj题单
counter: 664BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ120 ...
- BZOJ刷题列表【转载于hzwer】
沿着黄学长的步伐~~ 红色为已刷,黑色为未刷,看我多久能搞完吧... Update on 7.26 :之前咕了好久...(足见博主的flag是多么emmm......)这几天开始会抽时间刷的,每天几道 ...
随机推荐
- ios Toll-Free Bridging
有一些数据类型是能够在 Core Foundation Framework 和 Foundation Framework 之间交换使用的.这意味着,对于同一个数据类型,你既可以将其作为参数传入 Cor ...
- AutoLayout的一些注意事项
要了解autolayout 首先要知道程序视图启动顺序: -(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; ...
- C#下如何用NPlot绘制期货股票K线图(3):设计要显示的股票价格图表窗口并定义相应类的成员及函数
[内容简介] 上一篇介绍了要显示K线图所需要的数据结构,及要动态显示K线图,需要动态读取数据文件必需的几个功能函数.本篇介绍要显示蜡烛图所用到的窗口界面设计及对应类定义.下面分述如下: [窗口界面] ...
- TreeListView的用法
public void ProductBind() { tlvProduct.Items.Clear(); List<ProductInfo> list = ppbll.GetProduc ...
- c++ primer复习(五):类
一:基本内容 1 类 数据成员:用于存储与类对象相关联的状态 成员函数:对数据成员进行操作 类将接口与实现分离,接口指定了类支持的操作,操作的具体实现细节是类的设计者才需要了解 2 类成员 类成员可以 ...
- 使用NPOI操作Excel
案例:用NPOI动态生成一个Excel表,然后弹出对话框让用户下载,文件名是"用户列表.xls" 先去相关网站下载 NPOI DLL文件,再引用 application/x-e ...
- MyEclipse 搭建webservice (axis1.4)
0 引言 以前都是做javaweb的 最近因工作需要 接触了webservice 关于什么事webservice,与web的区别,soap,跟http的区别,asix1和asix2的区别,为什么不用 ...
- 在 lamp(centos)下配置二级 域名 、虚拟主机
1.你得拥有一个泛域名解析的顶级域名,有一个独立的IP: 2.解析二级域名,如在万网中心里,记录类型为A, 主机记录即为要配的二级域名(如:增加两个:bbs.mydomain.com 和 www.my ...
- js事件对象--DOM中的事件对象/IE中的事件对象/跨浏览器的事件对象
事件对象 在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息.包括导致事件的元素.事件的类型,以及其他与特定事件相关的信息.例如,鼠标操作导致的事件对 ...
- 使用css3实现文章新闻列表排行榜(数字)
列举几个简单的文章排行榜数字效果 一:使用list-style来显示数字.圆点.字母或者图片 <style> li{width:300px; border-bottom: 1px dott ...