BZOJ4423: [AMPPZ2013]Bytehattan
来源:互联网 发布:ps下载mac免费版下载 编辑:程序博客网 时间:2024/06/05 18:38
BZOJ4423: [AMPPZ2013]Bytehattan
对偶图·并查集
题解:
http://www.cnblogs.com/lcf-2000/p/6217985.html
删除一条边可以看做把两个空块连通。当删除一条边时这条边紧邻的两个空块已经连通了,那么删除这条边会导致这条边的两个顶点不连通。
仔细想想觉得非常有道理。当删除一条边时发现这条边紧邻的两个空块已经连通了,那么删除这条边后会出现一个空块连成的环,于是就把里面的点和外面的点给隔开了。
之后的事就非常简单了。将空块抠出来,然后并查集维护联通性即可。
Code:
#include <iostream>#include <cstring>#include <cstdio>#define D(x) cout<<#x<<" = "<<x<<" "#define E cout<<endlusing namespace std;const int N = 1500*1500+5;int n,k,id[1505][1505];struct MergeSet{ int pa[N]; void init(int sz){ for(int i=1;i<=sz;i++)pa[i]=i; } int find(int x){ if(pa[x]!=x)pa[x]=find(pa[x]); return pa[x]; }} ms;void init(){ for(int i=1;i<=n-1;i++) for(int j=1;j<=n-1;j++) id[i][j]=(i-1)*(n-1)+j;}void getblock(int a,int b,char op,int &x,int &y){ if(op=='N'){ x=id[a-1][b]; y=id[a][b]; } else{ x=id[a][b-1]; y=id[a][b]; }}int main(){ freopen("a.in","r",stdin); int a1,a2,a,b1,b2,b,x,y,ans=1; char op[5]; scanf("%d%d",&n,&k); init(); ms.init(n*n); for(int i=1;i<=k;i++){ scanf("%d%d%s",&a1,&b1,op); scanf("%d%d%s",&a2,&b2,op+1); if(ans)a=a1,b=b1,op[0]=op[0]; else a=a2,b=b2,op[0]=op[1];// D(a); D(b); D(op[0]); E; getblock(a,b,op[0],x,y);// D(x); D(y); E; x=ms.find(x); y=ms.find(y); if(x==y)ans=false; else ans=true, ms.pa[x]=y; printf("%s\n",ans?"TAK":"NIE"); }}
阅读全文
0 0
- BZOJ4423: [AMPPZ2013]Bytehattan
- BZOJ4423: [AMPPZ2013]Bytehattan
- [BZOJ4423] [AMPPZ2013] Bytehattan - 平面图 - 并查集
- BZOJ4423: [AMPPZ2013]Bytehattan(并查集,对偶图)
- bzoj 4423: [AMPPZ2013]Bytehattan
- bzoj 4423: [AMPPZ2013]Bytehattan
- bzoj 4423: [AMPPZ2013]Bytehattan 并查集
- 4423: [AMPPZ2013]Bytehattan|并查集|平面图转对偶图
- 4423: [AMPPZ2013]Bytehattan 平面图转对偶图+并查集
- [平面图 并查集] BZOJ 4423 [AMPPZ2013]Bytehattan
- 【jzoj3839】【bzoj4423】【AMPPZ 2013 baj】【Bytehattan】【Babystep】【平面图转对偶图】
- BZOJ 4423: [AMPPZ2013]Bytehattan 并查集 平面图转对偶图
- 【搬自bzoj4423】【JZOJ3839】Baby Step 题解
- BZOJ 4423 AMPPZ 2013 Bytehattan 平面图 并查集
- BZOJ 4423 Bytehattan (对偶图 并查集)
- Win7 安装 VS 2015 运行C++时提示ucrtbased.dll丢失 的解决方法
- Pointers on C——8 Arrays.10
- Velocity
- 二进制安装mysql
- dos命令登陆mysql命令
- BZOJ4423: [AMPPZ2013]Bytehattan
- JNDI
- iOS开发之Debug之ld: framework not found XXX
- 【今日头条】今日头条三面面经
- PDO事务处理
- java CSDN转载博客的方法
- [BUG 记录]
- QT实现一个简易文本编辑器
- MySQL架构设计谈:从开发规范、选型、拆分到减压