【bzoj4423】[AMPPZ2013]Bytehattan(平面图转对偶图+并查集)
题目传送门:bzoj4423
如果是普通的删边判连通性,我们可以很显然的想到把操作离线下来,倒着加边。然而,这题强 制 在 线。
虽然如此,但是题目所给的图是个平面图。那么我们把它转成对偶图试试看?
在对偶图上,删边变成了加边(把边两边的网格连通起来)。并且,我们可以发现,如果在对偶图上加边时发现出现了一个环,那么就说明这个环中间的格点被完全同外面的格点切断了联系(包括刚才删去的边两侧的点)。
于是我们就只需在对偶图上用并查集维护对偶图的连通性即可。
代码:
#include<cstdio>
#define maxn 1510
using namespace std;
int fa[maxn*maxn];
int n,m,lastans;
inline int getid(int x,int y)
{
if(x<||y<||x>=n||y>=n)return ;
else return (x-)*n+y;
}
int find(int x){return fa[x]==x?x:fa[x]=find(fa[x]);}
void work(int x,int y,char op)
{
int f1,f2;
if(op=='N')f1=find(getid(x-,y)),f2=find(getid(x,y));
else f1=find(getid(x,y-)),f2=find(getid(x,y));
if(f1==f2)printf("NIE\n"),lastans=;
else fa[f1]=f2,printf("TAK\n"),lastans=;
}
int main()
{
scanf("%d%d",&n,&m);
lastans=;
for(int i=;i<=n*n;i++)fa[i]=i;
for(int i=;i<=m;i++){
int x1,y1,x2,y2;
char c1,c2;
scanf("%d %d %c %d %d %c",&x1,&y1,&c1,&x2,&y2,&c2);
if(lastans)work(x1,y1,c1);
else work(x2,y2,c2);
}
}
bzoj4423
【bzoj4423】[AMPPZ2013]Bytehattan(平面图转对偶图+并查集)的更多相关文章
- BZOJ 4423: [AMPPZ2013]Bytehattan 平面图转对偶图 + 并查集
Description 比特哈顿镇有n*n个格点,形成了一个网格图.一开始整张图是完整的.有k次操作,每次会删掉图中的一条边(u,v),你需要回答在删除这条边之后u和v是否仍然连通. Input 第一 ...
- BZOJ_4423_[AMPPZ2013]Bytehattan_对偶图+并查集
BZOJ_4423_[AMPPZ2013]Bytehattan_对偶图+并查集 Description 比特哈顿镇有n*n个格点,形成了一个网格图.一开始整张图是完整的. 有k次操作,每次会删掉图中的 ...
- BZOJ4423 [AMPPZ2013]Bytehattan
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...
- 【bzoj5183】[Baltic2016]Park 离线+对偶图+并查集
题目描述 在Byteland的首都,有一个矩形围栏围起来的公园.在这个公园里树和访客都以一个圆形表示.公园有四个出入口,每个角落一个(1=左下角,2=右下角,3=右上角,4=左上角).访客能通过这些出 ...
- 【bzoj3007】拯救小云公主 二分+对偶图+并查集
题目描述 英雄又即将踏上拯救公主的道路…… 这次的拯救目标是——爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只boss,而是上千只boss.当英雄意识到自己还是等 ...
- 【BZOJ4423】[AMPPZ2013]Bytehattan 对偶图+并查集
[BZOJ4423][AMPPZ2013]Bytehattan Description 比特哈顿镇有n*n个格点,形成了一个网格图.一开始整张图是完整的.有k次操作,每次会删掉图中的一条边(u,v), ...
- [BZOJ4423][AMPPZ2013]Bytehattan(对偶图+并查集)
建出对偶图,删除一条边时将两边的格子连边.一条边两端连通当且仅当两边的格子不连通,直接并查集处理即可. #include<cstdio> #include<algorithm> ...
- 对偶图 并查集 BZOJ4423
题目链接 题目因为要根据上一次的输出结果来判断这次的输入,也就是要求我们强制在线,不能够把输入全部储存后处理 如果不要求强制在线,我们可以先把所以输入储存起来,从最后开始处理,把删边改成加边,如果在加 ...
- BZOJ 3007 [SDOI2012]拯救小云公主 - 对偶图 + 并查集
Solution 答案具有单调性, 显然可以二分答案. 有两个注意点 : 英雄是可以随便走的, 也就是不是网格图... 还有坐标不能小于$1$ QAQ 开始时英雄在左下角, 公主在右上角, 我们反过来 ...
随机推荐
- linux下非root用户的sudo问题
linux下的root用户是个超级管理员,一般是不用这个用户登录进行操作的,但有时候需要root权限,又不想切换用户的话可以使用sudo命令.但是不是所有的用户都可以使用sudo命令的. 首先可能会遇 ...
- vue下给title配置图标.ico
在根目录下放入要作为浏览网站时看到的网页title里的图标.如 32*32 后缀为.ico的图 然后再项目中build文件夹中的,webpack.dev.conf.js文件加入一句代码,加入完重启即可 ...
- linux统计当前文件夹下所有文件的个数
ls 加 R 选项表示recursive递归
- 感知器python
感知器学习的目标是求得一个能够将训练集正实例点和负实例点·完全正确分开的分离超平面.即找到这超平面的参数w,b. 超平面定义 w*x+b=0 其中w是参数,x是数据.公式很好理解以二维平面为例,w有两 ...
- Spring源码解析(一)开篇
前言 Spring源码继承结构比较复杂,看过以后经常会忘记.因此,记录一下源码分析的过程,方便以后回顾.本次分析的Spring源码版本为3.2.15. 另外,一提Spring就是IOC.DI等等,我们 ...
- Using Bluetooth LE with Go (Golang)
Using Bluetooth LE with Go (Golang) Gatt is a Go package, which provides developers to create BLE a ...
- 理解tomcat之搭建简易http服务器
做过java web的同学都对tomcat非常熟悉.我们在使用tomcat带来的便利的同时,是否想过tomcat是如何工作的呢?tomcat本质是一个http服务器,本篇文章将搭建一个简单的http服 ...
- PAT 1036 Boys vs Girls[简单]
1036 Boys vs Girls (25 分) This time you are asked to tell the difference between the lowest grade of ...
- Oracle trigger 触发器
触发器使用教程和命名规范 目 录触发器使用教程和命名规范 11,触发器简介 12,触发器示例 23,触发器语法和功能 34,例一:行级触发器之一 45,例二:行级触发器之二 46,例三:INSTEA ...
- python16_day26【crm 增、改、查】
一.增加 二.修改 三.保存