【倒跑并查集维护连通块】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 (并查集维护联通分量)
这道题要逆向思维 反过来从大到小枚举, 就是在矩阵中一点一点加进去数字,这样比较 好操作, 如果正着做就要一点一点删除数字, 不好做. 我们需要在这个过程中维护联通块的个数, 这里用到了并查集. 首先 ...
随机推荐
- LR中排序脚本
/* * LoadRunner Java script. (Build: 670) * * Script Description: * */ import lrapi.lr; public class ...
- static心得
TextClass text; 吉晨 static注意 只要显式调用一个类的某一个static变量,那么就会连带static块,所有static变量一起调用,哪怕不去new一个对象,这时候已经对这 ...
- bat 符号说明
netstat -an|findstr 139 ipconfig/all findstr IP ipconfig/all |findstr 物理地址 定值选行 ipconf ...
- 洛谷 P1744 采购特价商品
题目背景 <爱与愁的故事第三弹·shopping>第一章. 题目描述 中山路店山店海,成了购物狂爱与愁大神的“不归之路”.中山路上有n(n<=100)家店,每家店的坐标均在-1000 ...
- lwz-过去一年的总结(15-16)
今天2016年2月6日,还有1个半小时的时间,就要离开这个工作了9个月的地方,准备前往下个城市了.趁着这点时间,来给过去的一年做个即兴的总结吧. 2015年的2月份,在以前同学的提议和支持下,我重新学 ...
- Grid Infrastructure 启动的五大问题 (文档 ID 1526147.1)
适用于: Oracle Database - Enterprise Edition - 版本 11.2.0.1 和更高版本本文档所含信息适用于所有平台 用途 本文档的目的是总结可能阻止 Grid In ...
- KissXML类库的使用方法
1.添加附件里面的KissXML到工程 2.加入libxml2.dylib 到Frameworks 3.修改工程信息,右击Targets下工程名选“Get Info”,进入修改Header Searc ...
- uaf-湖湘杯2016game_学习
0x00 分析程序 根据分析,我们可以得到以下重要数据结构 0x01 发现漏洞 1.在武器使用次数耗光后,程序会把存储该武器的堆块free,在free的时候没有清空指针,造成悬挂指针 2.commen ...
- ios 团购信息客户端demo(二)
接上一篇,这篇我们对我们的客户端加入KissXML,MBProgressHUD,AQridView这几个库,首先我们先加入KissXML,这是XML解析库,支持Xpath,可以方便添加更改任何节点.先 ...
- python爬虫(爬取图片)
python爬虫爬图片 爬虫爬校花网校花的图片 第一步 载入爬虫模块 #载入爬虫模块 import re #载入爬虫模块 import requests #载入爬虫模块 第二步 获得校花网的地址,获得 ...