题目

为了封印辉之环,古代塞姆利亚大陆的人民在异空间中建造了一座设备塔。
简单的说,这座设备塔是一个漂浮在异空间中的圆柱体,圆柱体两头的圆是计算核心,而侧面则是
传输信息所用的数据通道,划分成N *m 个区块。
然而,随着工作的继续进行,他们希望把侧面的一部分区块也改造成其他模块。然而,任何时候都
必须保证存在一条数据通道,能从圆柱体的一端通向另一端。
由于无法使用辉之环掌控下的计算系统,他们寻求你的帮助来解决这个问题。他们将逐个输入想要
改造的区域,而你则执行所有可行的改造并忽略可能导致数据中断的改造。

分析

圆柱体,所以左右两边相通。将这N*M个区块复制一个,并起来。
发现,如有有两个区块都被改造了,那么当其中个区块是在另一个区块的八个方向相邻的话,数据就不能从之间通过。
于是,我们搞个并查集,当改造一个区块时,如果在改造后,与之对应的被复制的区块,在并查集中有共同的父亲,那么这个区块就不合法,因为当区块和被复制的区块中可以通过区块相连,又因为每个区块都有对应的被复制的区块,显然整个圆柱体就一定被挡住了。

如果这个区块合法,那么将它八个方向相邻的区块中被改造的都和他用并查集合在一起。

有个小细节要就是当某个区块的八个方向相邻的区块中有列数小于1或大于2m的要处理一下。
#include <cmath>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
const int maxlongint=2147483647;
const int mo=1000000007;
const int N=3005;
using namespace std;
int k,n,m,fa[N*N*2],a[N][N*2],ans;
int z[8][2]=
{{-1,0},{0,-1},{1,0},{0,1},{-1,1},{1,-1},{1,1},{-1,-1}
};
int pos(int x,int y)
{return (x-1)*m*2+y;
}
int get(int x)
{if(fa[x]==x) return x;fa[x]=get(fa[x]);return fa[x];
}
int main()
{scanf("%d%d%d",&n,&m,&k);for(int i=1;i<=n*m*2;i++) fa[i]=i;for(k=k;k>=1;k--){int x,y;scanf("%d%d",&x,&y);int xx=x,yy=y+m;bool q=true;for(int i=0;i<=7 && q;i++)if(a[x+z[i][0]][(y+z[i][1]-1+2*m)%(2*m)+1]){int xf=get(pos(x+z[i][0],(y+z[i][1]-1+2*m)%(2*m)+1));for(int j=0;j<=7 && q;j++)if(a[xx+z[j][0]][(yy+z[j][1]-1+2*m)%(2*m)+1]){int yf=get(pos(xx+z[j][0],(yy+z[j][1]-1+2*m)%(2*m)+1));if(xf==yf) q=false;}}if(q){a[x][y]=a[xx][yy]=1;for(int i=0;i<=7;i++)if(a[x+z[i][0]][(y+z[i][1]-1+2*m)%(2*m)+1]){int xf=get(pos(x+z[i][0],(y+z[i][1]-1+2*m)%(2*m)+1));fa[xf]=pos(x,y);}for(int j=0;j<=7;j++)if(a[xx+z[j][0]][(yy+z[j][1]-1+2*m)%(2*m)+1]){int yf=get(pos(xx+z[j][0],(yy+z[j][1]-1+2*m)%(2*m)+1));fa[yf]=pos(xx,yy);}ans++;}}cout<<ans<<endl;
}

转载于:https://www.cnblogs.com/chen1352/p/9071400.html

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

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

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

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

    设备塔 Description 有一个NN*MM的网格图,特别的,第11列与第MM列相邻.现在有KK个操作,每个操作给出两个整数XX,YY,表示将(XX,YY)的网格变成障碍(即不可通过区域),若某次 ...

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

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

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

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

  5. [JZOJ3809]设备塔

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

  6. linux 模拟生成 CAN 设备

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

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

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

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

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

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

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

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

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

最新文章

  1. Matlab数据的可视化 -- 饼图
  2. elasticSearch 内置功能列表
  3. 【论文解读】EfficientNet强在哪里
  4. 1371. Find the Longest Substring Containing Vowels in Even Counts
  5. websockets_使用Java WebSockets,JSR 356和JSON映射到POJO的
  6. 云服务器主体信息可以变更吗,云服务器备案号是什么?备案号存在能否更换云服务器?...
  7. Python实现RabbitMQ中6种消息模型(转)
  8. Bootstrap 3 加半星 Star rating with half-stars
  9. 2021年南阳市五中高考成绩查询,南阳市“赫赫有名”的五大高中,2020年高考成绩一目了然!...
  10. 魔方机器人之下位机编程------下位机完整程序
  11. pic系列单片机c语言编程与应用实例,PIC系列单片机C语言编程与应用实例
  12. Markdown公式编辑总结
  13. 水果忍者 java_水果忍者v1.7.2
  14. 01 社会网络分析基础理论!
  15. 小程序内关注微信公众号的几种方式
  16. ★如何引导客户需求?几个经…
  17. 新华三comware开发部怎么样_未来网络什么样?新华三是这么说的
  18. Go语言圣经 - 第3章 基础数据类型
  19. 使用touch-punch.js实现移动端的拖放效果
  20. BGP协议:简介、属性、选路原则

热门文章

  1. OSPF的Router-id确定顺序和冲突情况
  2. HCIE Security IPSec 备考笔记(幕布)
  3. Hybrid 接口应用
  4. Ansible详解(二)——Ansible安装与命令
  5. VXLAN配置实例(二)——VXLAN跨子网互通
  6. CTFHUB技能树-Misc-流量分析-ICMP
  7. WPF 使用附加属性增加控件属性
  8. centos 6.5 x64安装php 7
  9. 七日Python之路--第十一天
  10. ln -s 一定要用绝对路径