设备塔

Description

有一个NN*MM的网格图,特别的,第11列与第MM列相邻。现在有KK个操作,每个操作给出两个整数XX,YY,表示将(XX,YY)的网格变成障碍(即不可通过区域),若某次操作后,存在一条路径起点在第一行,终点在第NN行,则称这是一次成功的操作。若某次操作是不成功的,则跳过本次操作。问总共有多少次成功的操作。

Data Constraint

NN,MM<=30003000 , KK<=300000300000

Solution

将网格图复制一份并右移,使得新的网格图的第一列与旧的网格图的第M列相邻,复制后原网格图的每一个位置对应着新网格图的一个位置。若某次操作后(设本次操作的格子为AA),AA的八个相邻格与A对应的位置的八相邻格之间存在一条障碍路径,则说明本次操作将会把整个网格图分成上下两部分,所以这次操作不是一次成功的操作。判断是否存在一条障碍路径可以通过并查集实现。

Code(Pascal)

label 123;
varwz:array[1..8,1..2] of longint=((-1,-1),(-1,0),(-1,1),(0,-1),(0,1),(1,-1),(1,0),(1,1));f:array[0..18000000] of longint;bz:array[-5500..18050000] of boolean;n,m,j,k,i,l,b1,b2,bj,jl,f1,f2,x,y,ans:longint;q1,q2:array[0..8] of longint;
function gf(o:longint):longint;beginif f[o]=o then exit(o);f[o]:=gf(f[o]);  exit(f[o]);end;
function ft(a,b:longint):longint;beginb:=b mod (2*m);  if b=0 then b:=2*m;exit((a-1)*2*m+b);end;
beginreadln(n,m,k);bj:=n*m*2;for i:=1 to n*m*2 do f[i]:=i;for i:=1 to k dobeginreadln(x,y);b1:=(x-1)*2*m+y;b2:=b1+m;f1:=gf(b1);  f2:=gf(b2);q1[0]:=0;  q2[0]:=0;for l:=1 to 8 doif (wz[l,1]+x>0) and (wz[l,1]+x<=n) andbz[ft(wz[l,1]+x,wz[l,2]+y+2*m)] thenbeginj:=ft(wz[l,1]+x,wz[l,2]+y+2*m);inc(q1[0]);q1[q1[0]]:=gf(j);end;for l:=1 to 8 doif (wz[l,1]+x>0) and (wz[l,1]+x<=n) andbz[ft(wz[l,1]+x,wz[l,2]+y+3*m)] thenbeginj:=ft(wz[l,1]+x,wz[l,2]+y+3*m);inc(q2[0]);q2[q2[0]]:=gf(j);end;for l:=1 to q1[0] dofor j:=1 to q2[0] doif q1[l]=q2[j] then goto 123;inc(ans);for l:=1 to q1[0] do f[q1[l]]:=f1;for l:=1 to q2[0] do f[q2[l]]:=f2;bz[b1]:=true;  bz[b2]:=true;123:end;writeln(ans);
end.

JZOJ 3809 【NOIP2014模拟8.25】设备塔相关推荐

  1. JZOJ 3809. 【NOIP2014模拟8.25】设备塔

    Description 为了封印辉之环,古代塞姆利亚大陆的人民在异空间中建造了一座设备塔. 简单的说,这座设备塔是一个漂浮在异空间中的圆柱体,圆柱体两头的圆是计算核心,而侧面则是 传输信息所用的数据通 ...

  2. JZOJ 3807. 【NOIP2014模拟8.25】地砖铺设

    Description 在游戏厅大赚了一笔的Randy 终于赢到了他想要的家具.乘此机会,他想把自己的房间好好整理一 下. 在百货公司,可以买到各种各样正方形的地砖,为了美观起见,Randy 不希望同 ...

  3. JZOJ 3808. 【NOIP2014模拟8.25】道路值守

    Description Crossbell 自治州有着四通八达的现代化交通.时值独立庆典之际,随着来自周边国家旅客的日益增 多,犯罪行为也悄无声息开始滋长起来. 特别任务支援科的警察们从总部收到了关于 ...

  4. [JZOJ3809]设备塔

    其实我并没有JZOJ的号...但既然dalao说了是JZOJ上的题,那就是了吧...... 为了封印辉之环,古代塞姆利亚大陆的人民在异空间中建造了一座设备塔. 简单的说,这座设备塔是一个漂浮在异空间中 ...

  5. linux 模拟生成 CAN 设备

    /*************************************************************************************** linux 模拟生成 ...

  6. 7-4 堆栈模拟队列 (25 分)

    7-4 堆栈模拟队列 (25 分) 设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q. 所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数: int IsFull(Stack S):判 ...

  7. PTA: 7-2 银行业务队列简单模拟 (25 分)

    大一下半期数据结构 数据结构题目集 7-2 银行业务队列简单模拟 (25 分) 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客 ...

  8. jzoj2702. 探险jzoj3917. 【NOIP2014模拟11.2A组】福慧双修

    Description 探险家小T好高兴!X国要举办一次溶洞探险比赛,获奖者将得到丰厚奖品哦!小T虽然对奖品不感兴趣,但是这个大振名声的机会当然不能错过! 比赛即将开始,工作人员说明了这次比赛的规则: ...

  9. 安卓手机 模拟辅助显示设备

    标签:安卓手机模拟辅助显示设备,安卓开发者模式副屏显示,方便调试AR,VR眼镜, 安卓手机模拟屏显示 部分项目上要用到安卓手机副屏,尤其做AR眼镜开发时,这时可以通过 TYPEC转HDMI线 一端连接 ...

最新文章

  1. Qt工作笔记-自定义菜单(右键菜单)
  2. 深入解析:DBA_OBJECTS中的OBJECT_ID与DATA_OBJECT_ID的区别
  3. st算法 求区间最值问题
  4. python的pass语句_Python pass语句–通过Python
  5. idea 用鼠标滚轮调整代码文字大小
  6. Failed to load Idlinux.c32, Boot failed: press any key to retry
  7. Maxwell:异构数据源实时同步工具
  8. 给机器人罗宾写一封英语回信_英语作文回信范文英语回信范文
  9. 回溯算法之迷宫问题(Maze)
  10. 主动扫描技术nmap详解
  11. android 修改软件图标大小,android – 是否可以在EditText中更改图标的大小
  12. (C语言)实现基于PHP的某公司自来水收费管理系统
  13. 两个妙招教你怎么拍照识别植物,增长见识
  14. Java包装类及自动装箱、拆箱
  15. 加州欧文计算机工程专业,加州大学欧文分校计算机工程排名第29(2018年TFE美国排名)...
  16. Altium Designer 如何从已有的PCB图、原理图,分别导出PCB封装库和原理图封装库
  17. JQuery解决跳转无效的问题(.location.href)
  18. matlab结果输出到文本的方法
  19. 数控铣削图案及编程_数控卧式铣床 01
  20. 浅谈200M光纤宽带

热门文章

  1. flarum论坛如何html,Flarum从入门安装到基本设置
  2. 微博文字字数限制(一天一个小案例)
  3. 第一,永远不要跟银行借钱;第二,永远不要向民间借贷;第三,量力而行(转)...
  4. Android 应用ttf字体
  5. 树莓派35/100 - 用graphviz画逻辑电路图
  6. 小小破解一下百度MP3的加密URL链接
  7. ImageNet1K的下载与使用
  8. 温度传感芯片助力智慧农业领域的应用
  9. pip安装包时报错WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status =None))
  10. 用Python模拟识别图片验证码并发送手机验证码