JZOJ 3809 【NOIP2014模拟8.25】设备塔
设备塔
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】设备塔相关推荐
- JZOJ 3809. 【NOIP2014模拟8.25】设备塔
Description 为了封印辉之环,古代塞姆利亚大陆的人民在异空间中建造了一座设备塔. 简单的说,这座设备塔是一个漂浮在异空间中的圆柱体,圆柱体两头的圆是计算核心,而侧面则是 传输信息所用的数据通 ...
- JZOJ 3807. 【NOIP2014模拟8.25】地砖铺设
Description 在游戏厅大赚了一笔的Randy 终于赢到了他想要的家具.乘此机会,他想把自己的房间好好整理一 下. 在百货公司,可以买到各种各样正方形的地砖,为了美观起见,Randy 不希望同 ...
- JZOJ 3808. 【NOIP2014模拟8.25】道路值守
Description Crossbell 自治州有着四通八达的现代化交通.时值独立庆典之际,随着来自周边国家旅客的日益增 多,犯罪行为也悄无声息开始滋长起来. 特别任务支援科的警察们从总部收到了关于 ...
- [JZOJ3809]设备塔
其实我并没有JZOJ的号...但既然dalao说了是JZOJ上的题,那就是了吧...... 为了封印辉之环,古代塞姆利亚大陆的人民在异空间中建造了一座设备塔. 简单的说,这座设备塔是一个漂浮在异空间中 ...
- linux 模拟生成 CAN 设备
/*************************************************************************************** linux 模拟生成 ...
- 7-4 堆栈模拟队列 (25 分)
7-4 堆栈模拟队列 (25 分) 设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q. 所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数: int IsFull(Stack S):判 ...
- PTA: 7-2 银行业务队列简单模拟 (25 分)
大一下半期数据结构 数据结构题目集 7-2 银行业务队列简单模拟 (25 分) 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客 ...
- jzoj2702. 探险jzoj3917. 【NOIP2014模拟11.2A组】福慧双修
Description 探险家小T好高兴!X国要举办一次溶洞探险比赛,获奖者将得到丰厚奖品哦!小T虽然对奖品不感兴趣,但是这个大振名声的机会当然不能错过! 比赛即将开始,工作人员说明了这次比赛的规则: ...
- 安卓手机 模拟辅助显示设备
标签:安卓手机模拟辅助显示设备,安卓开发者模式副屏显示,方便调试AR,VR眼镜, 安卓手机模拟屏显示 部分项目上要用到安卓手机副屏,尤其做AR眼镜开发时,这时可以通过 TYPEC转HDMI线 一端连接 ...
最新文章
- Qt工作笔记-自定义菜单(右键菜单)
- 深入解析:DBA_OBJECTS中的OBJECT_ID与DATA_OBJECT_ID的区别
- st算法 求区间最值问题
- python的pass语句_Python pass语句–通过Python
- idea 用鼠标滚轮调整代码文字大小
- Failed to load Idlinux.c32, Boot failed: press any key to retry
- Maxwell:异构数据源实时同步工具
- 给机器人罗宾写一封英语回信_英语作文回信范文英语回信范文
- 回溯算法之迷宫问题(Maze)
- 主动扫描技术nmap详解
- android 修改软件图标大小,android – 是否可以在EditText中更改图标的大小
- (C语言)实现基于PHP的某公司自来水收费管理系统
- 两个妙招教你怎么拍照识别植物,增长见识
- Java包装类及自动装箱、拆箱
- 加州欧文计算机工程专业,加州大学欧文分校计算机工程排名第29(2018年TFE美国排名)...
- Altium Designer 如何从已有的PCB图、原理图,分别导出PCB封装库和原理图封装库
- JQuery解决跳转无效的问题(.location.href)
- matlab结果输出到文本的方法
- 数控铣削图案及编程_数控卧式铣床 01
- 浅谈200M光纤宽带
热门文章
- flarum论坛如何html,Flarum从入门安装到基本设置
- 微博文字字数限制(一天一个小案例)
- 第一,永远不要跟银行借钱;第二,永远不要向民间借贷;第三,量力而行(转)...
- Android 应用ttf字体
- 树莓派35/100 - 用graphviz画逻辑电路图
- 小小破解一下百度MP3的加密URL链接
- ImageNet1K的下载与使用
- 温度传感芯片助力智慧农业领域的应用
- pip安装包时报错WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status =None))
- 用Python模拟识别图片验证码并发送手机验证码