题目传送门: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(平面图转对偶图+并查集)的更多相关文章

  1. BZOJ 4423: [AMPPZ2013]Bytehattan 平面图转对偶图 + 并查集

    Description 比特哈顿镇有n*n个格点,形成了一个网格图.一开始整张图是完整的.有k次操作,每次会删掉图中的一条边(u,v),你需要回答在删除这条边之后u和v是否仍然连通. Input 第一 ...

  2. BZOJ_4423_[AMPPZ2013]Bytehattan_对偶图+并查集

    BZOJ_4423_[AMPPZ2013]Bytehattan_对偶图+并查集 Description 比特哈顿镇有n*n个格点,形成了一个网格图.一开始整张图是完整的. 有k次操作,每次会删掉图中的 ...

  3. BZOJ4423 [AMPPZ2013]Bytehattan

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...

  4. 【bzoj5183】[Baltic2016]Park 离线+对偶图+并查集

    题目描述 在Byteland的首都,有一个矩形围栏围起来的公园.在这个公园里树和访客都以一个圆形表示.公园有四个出入口,每个角落一个(1=左下角,2=右下角,3=右上角,4=左上角).访客能通过这些出 ...

  5. 【bzoj3007】拯救小云公主 二分+对偶图+并查集

    题目描述 英雄又即将踏上拯救公主的道路…… 这次的拯救目标是——爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只boss,而是上千只boss.当英雄意识到自己还是等 ...

  6. 【BZOJ4423】[AMPPZ2013]Bytehattan 对偶图+并查集

    [BZOJ4423][AMPPZ2013]Bytehattan Description 比特哈顿镇有n*n个格点,形成了一个网格图.一开始整张图是完整的.有k次操作,每次会删掉图中的一条边(u,v), ...

  7. [BZOJ4423][AMPPZ2013]Bytehattan(对偶图+并查集)

    建出对偶图,删除一条边时将两边的格子连边.一条边两端连通当且仅当两边的格子不连通,直接并查集处理即可. #include<cstdio> #include<algorithm> ...

  8. 对偶图 并查集 BZOJ4423

    题目链接 题目因为要根据上一次的输出结果来判断这次的输入,也就是要求我们强制在线,不能够把输入全部储存后处理 如果不要求强制在线,我们可以先把所以输入储存起来,从最后开始处理,把删边改成加边,如果在加 ...

  9. BZOJ 3007 [SDOI2012]拯救小云公主 - 对偶图 + 并查集

    Solution 答案具有单调性, 显然可以二分答案. 有两个注意点 : 英雄是可以随便走的, 也就是不是网格图... 还有坐标不能小于$1$ QAQ 开始时英雄在左下角, 公主在右上角, 我们反过来 ...

随机推荐

  1. PacificA: Replication in Log-Based Distributed Storage Systems

    PacificA: Replication in Log-Based Distributed Storage Systems - Microsoft Research https://www.micr ...

  2. 引入 netty网关,向flume提交数据

    netty  处理http请求 package com.test; import io.netty.bootstrap.ServerBootstrap;import io.netty.channel. ...

  3. 算法大神之路——排序

    从今天开始,给自己立下一个目标,每天晚上写一篇算法与数据结构的博客,用来给自己以后的算法工程师的目标铺路! 今天晚上就以算法里面的排序,作为自己的第一章节吧. 排序,就是讲一组数据,按照特定的规则去调 ...

  4. vue中回车键登录

    created() { let that = this; document.onkeypress = function(e) { var keycode = document.all ? event. ...

  5. Apache mahout 源码阅读笔记--协同过滤, PearsonCorrelationSimilarity

    协同过滤源码路径: ~/project/javaproject/mahout-0.9/core/src $tree main/java/org/apache/mahout/cf/taste/ -L 2 ...

  6. Eclipse集成SVN

    安装Subversion1.82(SVN)插件 简介    :SVN是团队开发的代码管理工具,它使我们得以进行多人在同一平台之下的团队开发. 解决问题:Eclipse下的的SVN插件安装. 学到    ...

  7. [golang note] 函数定义

    普通函数定义 √ golang函数基本组成:关键字func.函数名.参数列表.返回值.函数体和返回语句. • 语法如下 func 函数名(参数列表) (返回值列表) { // 函数体 } • 示例如下 ...

  8. Selenium之使用PageFactory初始化pageobject

    使用PageFactory初始化pageobject有什么作用呢,下面举个例子来说明 public BaiduPage baiduPage = PageFactory.initElements(dri ...

  9. beego——发行部署

    开发模式 通过bee创建的项目,beego默认情况下是开发模式. 我们可以通过如下的方式改变我们的模式: beego.RunMode = "prod" 或者我们在conf/app. ...

  10. oracle 数据库误删数据,误删表的恢复

    1.某表的数据误删了,那么可以查询这个表某一时间节点之前的数据,并放到一个新建的表里. create table temptable as select * from t_billdefi  as O ...