考虑到这道题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的更多相关文章

  1. BZOJ1295 [SCOI2009]最长距离 最短路 SPFA

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1295 题意概括 有一块矩形土地,被分为 N*M 块 1*1 的小格子. 有的格子含有障碍物. 如果 ...

  2. 【BZOJ1295】[SCOI2009]最长距离(最短路)

    [BZOJ1295][SCOI2009]最长距离(最短路) 题面 BZOJ 洛谷 题解 这题很妙啊. 我们枚举一个点,只需要考虑到他的最远点就行了,显然只需要考虑一个点即可.那么这两个点之前联通的最小 ...

  3. bzoj1295: [SCOI2009]最长距离

    bfs最短路. 写的真丑... #include<cstdio> #include<algorithm> #include<cstring> #include< ...

  4. 【spfa】bzoj1295 [SCOI2009]最长距离

    题意:给你一个n*m的点阵.有些点是障碍,求一个欧几里得距离最大的点对(A,B),使得在移走的障碍≤T的情况下,可以从A走到B. 建图,跑n*m次spfa,求出从 每个点 出发到 其他所有点 的 经过 ...

  5. [BZOJ1295][SCOI2009]最长距离 最短路+枚举

    1295: [SCOI2009]最长距离 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1683  Solved: 912[Submit][Statu ...

  6. 题解 [BZOJ1295][SCOI2009] 最长距离

    题面 解析 \(n\)只有\(30\)可以直接枚举每个矩形, 判断他们的左上角到右下角或右上角到左上角的最短路是否小于\(T\). 最短路可以用\(dijkstra\). 一开始想用\(DP\)写最短 ...

  7. bzoj1295 最长距离

    Description windy有一块矩形土地,被分为 N*M 块 1*1 的小格子. 有的格子含有障碍物. 如果从格子A可以走到格子B,那么两个格子的距离就为两个格子中心的欧几里德距离. 如果从格 ...

  8. [转载]hzwer的bzoj题单

    counter: 664BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ120 ...

  9. BZOJ刷题列表【转载于hzwer】

    沿着黄学长的步伐~~ 红色为已刷,黑色为未刷,看我多久能搞完吧... Update on 7.26 :之前咕了好久...(足见博主的flag是多么emmm......)这几天开始会抽时间刷的,每天几道 ...

随机推荐

  1. js获得文件根目录

    function getRootPath(){ //获取当前网址,如: http://localhost:8083/proj/meun.jsp var curWwwPath = window.docu ...

  2. input设置disabled,经过strus2提交到后台,后台取不到值

    页面中有多个name相同的input与后台action中一个属性对应,一直在好奇为什么会可以提交到后台呐,但是有时还报这个属性找不到对应的方法(多个name相同好像匹配的是数组,所以找不到), 但是我 ...

  3. 访问权限PPP(public、private、protected、default)之成员变量、成员变量权限解析

    首先,我们需要清楚一下方法是由哪些部分构成的: [权限修饰符列表][别的修饰符列表] 返回值类型 方法名(参数列表){   方法体:} 然后我们需要知道成员变量和成员方法访问有几种情况:1.当前包同一 ...

  4. HTTP协议认识

    一.HTTP协议概念 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议 HTTP是一个应用层协议,由请求和响应 ...

  5. 九度OJ 1077 最大序列和 -- 动态规划

    题目地址:http://ac.jobdu.com/problem.php?pid=1077 题目描述: 给出一个整数序列S,其中有N个数,定义其中一个非空连续子序列T中所有数的和为T的“序列和”. 对 ...

  6. 百度UEditor(富文本编辑器)的基础用法

    百度的这个编辑器挺强大的,这里只是用他的文本功能,没有介绍上传图片视频的. 我用是的SSH来写的项目. 1. 把下载的UEditor(ueditor1_4_3_1-utf8-jsp)解压后全部复制到W ...

  7. mysql 断电 启动不了 start: Job failed to start

    公司内部服务器,突然断电,造成无法启动的解决办法 把my.cnf中配置的datadir路径下的ib_logfile* (比如ib_logfile0, lb_logfile1....)文件移到另外一个目 ...

  8. HTML新元素

    <canvas> 标签定义图形,比如图表和其他图像.该标签基于 JavaScript 的绘图 API <audio> 定义音频内容 <video> 定义视频(vid ...

  9. MySql 在大数量的统计中具体的使用技巧

    一.CASE WHEN THEN ELSE END 使用用法. 在用sql语句统计某字段的某种状态的出现的次数,可以考虑用到 CASE WHEN THEN ELSE END 使用用法.当数据量过于庞大 ...

  10. Config IIS server6.0-- HTTP 错误 500.21 - Internal Server Error 解决方案

    HTTP 错误 500.21 - Internal Server Error 解决方案         不久前重新安装了Windows7,在安装了VS2010 开发平台之后,将网站发布到IIS,访问发 ...