关闭

怕黑的小强

标签: 编程
305人阅读 评论(0) 收藏 举报

【题目描述】
有一个N*N的房间,房间内有一些开关可以打开另外一些房间的灯。小强可以走向相邻的四个房间,但是小强非常怕黑,只有相邻的房间的灯是打开的,才敢进入。小强一开始身处[1,1]房间 ,问小强最多可以进入多少个房间。
【输入格式】
第一行,两个整数N和M
以下M行,每行四个整数x、y、a、b,表示在房间[x,y]可以打开房间[a,b]的灯
【输出格式】
最多可以进入多少个房间
【样例输入】
3 6
1 1 1 2
2 1 2 2
1 1 1 3
2 3 3 1
1 3 1 2
1 3 2 1
【样例输出】
5
【数据范围】
1≤N≤100
1≤M≤20000
【分析】
搜索,每次向四个方向扩展直到无法更新答案。

const
  dx:array[1..4]of -1..1=(-1,1,0,0);
    dy:array[1..4]of -1..1=(0,0,-1,1);
var
  a,b,c,d:array[0..20001]of longint;
    i,j,n,m,ans:longint;
    flag:boolean;
    x,y:array[0..101,0..101]of 0..1;
procedure swap(var x,y:longint);
var tmp:longint;
begin
  tmp:=x;x:=y;y:=tmp;
end;
procedure qsort(l,r:longint);
var
  i,j,mid:longint;
begin
  i:=l;j:=r;
    mid:=(l+r) div 2;
    repeat
        while (a[i]<a[mid]) or ((a[i]=a[mid])and(b[i]<b[mid])) or ((a[i]=a[mid])and(b[i]=b[mid])and(c[i]<c[mid])) or ((a[i]=a[mid])and(b[i]=b[mid])and(c[i]=c[mid])and(d[i]<d[mid])) do inc(i);
        while (a[j]>a[mid]) or ((a[j]=a[mid])and(b[j]>b[mid])) or ((a[j]=a[mid])and(b[j]=b[mid])and(c[j]>c[mid])) or ((a[j]=a[mid])and(b[j]=b[mid])and(c[j]=c[mid])and(d[j]>d[mid])) do dec(j);
        if i<=j then begin
            swap(a[i],a[j]);swap(b[i],b[j]);swap(c[i],c[j]);swap(d[i],d[j]);
            inc(i);dec(j);
        end;
    until i>j;
  if l<j then qsort(l,j);
    if i<r then qsort(i,r);
end;
procedure search(tx,ty:longint);
var
  i,cx,cy:longint;
begin
  y[tx,ty]:=1;
    for i:=1 to 4 do begin
      cx:=tx+dx[i]; cy:=ty+dy[i];
      if (y[cx,cy]=0)and(x[cx,cy]=1)and(cx>=1)and(cx<=n)and(cy>=1)and(cy<=n) then search(cx,cy);
    end;
end;
begin
  read(n,m);
    for i:=1 to m do read(a[i],b[i],c[i],d[i]);
    qsort(1,m);
    x[1,1]:=1;
    y[1,1]:=1;
    flag:=true;
    while flag do begin
      flag:=false;
        for i:=1 to m do begin
          if (x[a[i],b[i]]=1)and(y[a[i],b[i]]=1) then begin
              if x[c[i],d[i]]=0 then flag:=true;
                x[c[i],d[i]]:=1;
            end;
            if (x[a[i],b[i]]=1)and(y[a[i],b[i]]=1) then
              for j:=1 to 4 do y[a[i]+dx[j],b[i]+dy[j]]:=1;
            if (x[c[i],d[i]]=1)and(y[c[i],d[i]]=1) then
              for j:=1 to 4 do y[c[i]+dx[j],d[i]+dy[j]]:=1;
        end;
    end;
    fillchar(y,sizeof(y),0);
    search(1,1);
    ans:=0;
    for i:=1 to n do
      for j:=1 to n do
          if y[i,j]=1 then inc(ans);
    write(ans);
end.
3
0
查看评论

性能测试分层模型-选自书籍:小强软件测试疯狂讲义

百度搜索:小强测试品牌 新书推荐 本书终于在前段时间出版了,现在已经可以在各大网店购买了,搜索书名即可。书籍购买地址:https://detail.tmall.com/item.htm?id=547310727717 这里我特别提前说一句:任何东西都有一定的受众群体,世界上也没...
  • xqtesting
  • xqtesting
  • 2017-05-05 09:51
  • 622

小强和小明猜生日(20min)

今天碰到一道有点意思的智力题,想通了其实:
  • zhang360896270
  • zhang360896270
  • 2014-10-10 23:30
  • 3083

《小强升职记》读书笔记

认识时间黑洞 。 ​ 由一件小事引发的巨大的时间浪费。​ 关掉即时通讯工具——关掉邮件提醒——保持桌面清洁——给水杯到满水——做一张任务清单——选一个不错的椅子——尽量的隔离自己——要事第一 ——无法集中精力时先休息一会——设置任务的最后期限​ 要有清晰的目标 工作四步法 ​ 1.将...
  • linxinyuelan
  • linxinyuelan
  • 2016-05-01 17:30
  • 575

《小强升职记》读书笔记(附PDF下载地址)

这本书的主题是时间管理。如果你还没有听过这个词语,不要被这个似乎只是空洞而不切实际理论的成功学的词语欺骗,实际上真的非常有益。真希望我能够早点了解到时间管理的理论。这本书是我在这个方面的启蒙。真心推荐给大家。我想通过本篇读书笔记跟大家分享我的收获,也由此督促自己自我总结。希望能够和有经验的好友多多交...
  • vincent_hbl
  • vincent_hbl
  • 2016-11-16 08:24
  • 1109

【投资与创业】【搭建 Alexa 语音服务】【Java 面试】| Chat · 预告

1投资与创业:程序猿如何改变世界作者简介:丹华,最早押注比特币的分析师,《区块链数字货币投资指南》一书作者(合著),域名 smartcontract.org 拥有者(寻购买或合作伙伴)。2013年开始关注比特币,跟踪思考至今,积累了大量心得体会。2006年起进入证券行业,完整经历多轮牛熊周期,对群体...
  • GitChat
  • GitChat
  • 2017-12-21 00:00
  • 581

loadrunner视频下载:小强作品-《零基础学习软件测试

以下为在线观看的方式,下载直接在url后面加“.zip"即可。 0 性能测试常见用语 http://www.boobooke.com/v/bbk1577 1 lr目录分析 http://www.boobooke.com/v/bbk1574 2.1 lr界面分析 http:/...
  • cnbird2008
  • cnbird2008
  • 2011-11-30 20:01
  • 3836

【Windows 程序设计】【校招中常见的算法】【TensorFlow】【前端数据结构】| Chat · 预告

1 Windows 程序设计精髓:从 API、UI、结构到商业产品 作者简介: 范蠡,资深开发工程师,csdn认证博客技术专家,曾担任多个商业项目的客户端和服务器端主程、架构师。 Chat 简介: 当下,Android、Linux、Mac 等设备也大行其道,PC...
  • GitChat
  • GitChat
  • 2017-11-20 00:00
  • 225

Problem B: DNA

Problem B: DNA Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 16  Solved: 5 [Submit][Status][Web Board] ...
  • baidu_23955875
  • baidu_23955875
  • 2015-03-07 13:52
  • 1537

统筹高效利用时间——《小强升职记(升级版):时间管理故事书》读后感

统筹高效利用时间 ——小强升职记(升级版):时间管理故事书读后感       看完《小强升职记:时间管理故事书》,很有感触。书只是以小强为人物线索,通篇讲解如何管理、高效利用时间,和功利的升职等没有任何关系。全书着重讲如何利用时间,如&qu...
  • wojiushiwo987
  • wojiushiwo987
  • 2015-04-26 21:54
  • 2418

学习51单片机杂记2

 1、与的运算符为“·”,运算规律:0·0=0  0·1=0  1·1=12、或得运算符为“+”3、PO=0x7f;//P0.7亮     4、使用循环左移、循环右移,需要#include 头文件5、...
  • Fei20090305
  • Fei20090305
  • 2010-07-15 22:54
  • 370
    个人资料
    • 访问:238123次
    • 积分:3746
    • 等级:
    • 排名:第10200名
    • 原创:176篇
    • 转载:22篇
    • 译文:0篇
    • 评论:18条
    个人主页
    www.jrxblog.top 欢迎访问&交换友链!
    博客专栏