【倒跑并查集维护连通块】NCPC 2016 A. Artwork
http://codeforces.com/gym/101550/attachments
【AC】
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e3+;
const int maxq=1e4+;
int n,m,q;
struct node
{
int x1,y1;
int x2,y2;
}nd[maxq];
int fir[maxn][maxn];
bool vis[maxn][maxn];
int fa[maxn*maxn];
int id(int x,int y)
{
return (x-)*m+y;
} void init()
{
for(int i=;i<=n*m;i++) fa[i]=i;
} int getfa(int x)
{
return x==fa[x]?x:fa[x]=getfa(fa[x]);
} void mix(int x,int y)
{
int fx=getfa(x);
int fy=getfa(y);
if(fx^fy)
{
fa[fx]=fy;
}
}
bool same(int x,int y)
{
return getfa(x)==getfa(y);
}
int dir[][]={{,},{-,},{,},{,-}};
bool inside(int x,int y)
{
return x>=&&x<=n&&y>=&&y<=m;
}
int ans[maxq];
int main()
{
while(~scanf("%d%d%d",&n,&m,&q))
{
memset(vis,false,sizeof(vis));
memset(fir,,sizeof(fir));
init();
for(int i=;i<=q;i++)
{
scanf("%d%d%d%d",&nd[i].x1,&nd[i].y1,&nd[i].x2,&nd[i].y2);
for(int j=nd[i].x1;j<=nd[i].x2;j++)
{
for(int k=nd[i].y1;k<=nd[i].y2;k++)
{
vis[j][k]=true;
if(!fir[j][k]) fir[j][k]=i;
}
}
}
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
if(!vis[i][j]&&inside(i+,j)&&!vis[i+][j]) mix(id(i,j),id(i+,j));
if(!vis[i][j]&&inside(i,j+)&&!vis[i][j+]) mix(id(i,j),id(i,j+));
}
}
int cnt=;
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
if(!vis[i][j]&&getfa(id(i,j))==id(i,j)) cnt++;
}
}
for(int i=q;i>=;i--)
{
ans[i]=cnt;
for(int x=nd[i].x1;x<=nd[i].x2;x++)
{
for(int y=nd[i].y1;y<=nd[i].y2;y++)
{
if(fir[x][y]==i)
{
vis[x][y]=false;
cnt++;
for(int mv=;mv<;mv++)
{
int xx=x+dir[mv][];
int yy=y+dir[mv][];
if(!inside(xx,yy)) continue;
if(vis[xx][yy]) continue;
if(!same(id(x,y),id(xx,yy)))
{
cnt--;
mix(id(x,y),id(xx,yy));
} }
}
}
}
}
for(int i=;i<=q;i++)
{
printf("%d\n",ans[i]);
}
}
return ;
}
【倒跑并查集维护连通块】NCPC 2016 A. Artwork的更多相关文章
- P1197 [JSOI2008]星球大战(并查集判断连通块+正难则反)
P1197 [JSOI2008]星球大战(并查集判断连通块+正难则反) 并查集本来就是连一对不同父亲的节点就的话连通块就少一个. 题目描述 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统 ...
- C. Edgy Trees Codeforces Round #548 (Div. 2) 并查集求连通块
C. Edgy Trees time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- BZOJ 1015: [JSOI2008]星球大战starwar(并查集求连通块+离线处理)
http://www.lydsy.com/JudgeOnline/problem.php?id=1015 题意: 思路:好题啊!!! 这道题目需要离线处理,先把所有要删的点给保存下来,然后逆序加点,这 ...
- [Codeforces 1027 F] Session in BSU [并查集维护二分图匹配问题]
题面 传送门 思路 真是一道神奇的题目呢 题目本身可以转化为二分图匹配问题,要求右半部分选择的点的最大编号最小的一组完美匹配 注意到这里左边半部分有一个性质:每个点恰好连出两条边到右半部分 那么我们可 ...
- hihoCoder #1291 : Building in Sandbox 逆向处理+并查集维护
/** 题目:#1291 : Building in Sandbox 链接:https://hihocoder.com/problemset/problem/1291 题意:就是一个三维的空间里,按照 ...
- Codeforces325 D【并查集维护连通性】
参考:大牛blog 思路: 因为是环,所以可以复制一下图,先判断一下和他是不是和与他相邻的8个之一的一个障碍使得构成了一个环,环就是一个连通,用并查集维护即可: 如果没有就ans++,然后并把这个点加 ...
- 2019牛客暑期多校训练营(第八场)E:Explorer(LCT裸题 也可用线段树模拟并查集维护连通性)
题意:给定N,M,然后给出M组信息(u,v,l,r),表示u到v有[l,r]范围的通行证有效.问有多少种通行证可以使得1和N连通. 思路:和bzoj魔法森林有点像,LCT维护最小生成树. 开始和队友 ...
- HDU 3018 Ant Trip (并查集求连通块数+欧拉回路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3018 题目大意:有n个点,m条边,人们希望走完所有的路,且每条道路只能走一遍.至少要将人们分成几组. ...
- 紫书 习题 11-12 UVa 1665 (并查集维护联通分量)
这道题要逆向思维 反过来从大到小枚举, 就是在矩阵中一点一点加进去数字,这样比较 好操作, 如果正着做就要一点一点删除数字, 不好做. 我们需要在这个过程中维护联通块的个数, 这里用到了并查集. 首先 ...
随机推荐
- iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译
编号 iOS-Apple苹果官方文档翻译名称 博文链接地址 1 苹果API常用英语名词---iOS-Apple苹果官方文档翻译 http://www.cnblogs.com/ChenYilong/p/ ...
- 【Web应用-网络连接】Azure Web 应用对外连接数上限分析
在 Azure Web 应用中发起大量外部连接操作时,需要考虑已经建立了多少外部连接.当超过最大对外连接数时,Azure Web 应用将会产生套接字异常.Azure Web 应用对于各个级别的实例,对 ...
- CloudFoundry命令行和Kubernetes命令行的Restful API消费方式
先说CloudFoundry的命令行工具CLI.我们在CloudFoundry环境下工作,第一个使用的命令就是cf login. 如果在环境变量里维护CF_TRACE的值为true: 则我们能发现,诸 ...
- java导入Excel表格数据
首先导入Excel数据需要几样东西 第一需要两个依赖包,这里直接是在pom注入依赖 <!--excel--> <dependency> <groupId>org.a ...
- python基础一 day14 生成器函数进阶
def generator(): print(123) content = yield 1 print('=======',content) print(456) arg = yield 2 '''' ...
- Freemarker入门小案例(生成静态网页的其中一种方式)
其实生成静态网页的方式有好多种,我昨天看了一下,Freemarker是其中一种,但是Freemarker现在我们都用得比较少了,现在用得ActiveMQ用来发送信息到静态页面,不过想了一下这个小东西, ...
- CPP-网络/通信:COM
))//打开串口 { ) { CloseCom();//关闭串口 break; } //添加处理代码. } //最后关闭串口 CloseCom();//关闭串口
- 2017年网络空间安全技术大赛部分writeup
作为一个bin小子,这次一个bin都没做出来,我很羞愧. 0x00 拯救鲁班七号 具体操作不多说,直接进入反编译源码阶段 可以看到,只要2处的str等于a就可以了,而str是由1处的checkPass ...
- bootstrap 翻页(对齐的链接)
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- Protocol(协议)、Delegate(委托)、DataSource(数据源)
这里以 UITableViewController 和 UITableView 的关系为例: //--------------------------------------------------- ...