我有矩阵,你有吗?:并查集小清新题。

思路

看到这题,我第一个想到的竟然是高斯消元。

首先一行和一列肯定不会操作两次以上,不然一定可以等效为操作 \(0\) 次和操作 \(1\) 次的情况。

于是我们将每行每列看做一个值为 \(0\) 或 \(1\) 的变量进行考虑。

再考虑异或的性质,显然,当 \(a_{i,j}\ne b_{i,j}\) 时,第 \(i\) 行和第 \(j\) 列的变量取值一定不同。原因是如果相同的话,那么要么就是都没操作,要么就是操作了两次,等效为没操作,自然也就无法修改。否则一定是修改了一次的情况。

同理,当 \(a_{i,j}=b_{i,j}\) 时,第 \(i\) 行和第 \(j\) 列的变量取值一定相同

因此,这就被转化为一个很显然的扩展域并查集了。不同值的变量分到不同扩展域,相同值的变量分到相同扩展域,判断是否矛盾即可。

时间复杂度 \(O(nm)\)。

代码

#include <bits/stdc++.h>
#define fi first
#define se second
#define lc (p<<1)
#define rc ((p<<1)|1)
#define eb(x) emplace_back(x)
#define pb(x) push_back(x)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ldb;
using pi=pair<int,int>;
int n,m,f[4005],a[1005][1005],b[1005][1005];
void init()
{
for(int i=1;i<=2*(n+m);i++)f[i]=i;
}
int findf(int x)
{
if(f[x]!=x)f[x]=findf(f[x]);
return f[x];
}
void combine(int x,int y)
{
int fx=findf(x),fy=findf(y);
f[fx]=fy;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>m;
init();
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>b[i][j];
if(a[i][j]!=b[i][j])
{
if(findf(i)==findf(j+n))
{
cout<<"Budexing";
return 0;
}
combine(i,n+m+n+j);
combine(n+m+i,n+j);
}
else
{
if(findf(i)==findf(n+m+n+j))
{
cout<<"Budexing";
return 0;
}
combine(i,n+j);
combine(i+n+m,n+m+n+j);
}
}
}
cout<<"Koyi";
return 0;
}

Luogu P11543 Code+#5 我有矩阵,你有吗? 题解 [ 绿 ] [ 扩展域并查集 ]的更多相关文章

  1. Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) C 倒序并查集

    C. Destroying Array time limit per test 1 second memory limit per test 256 megabytes input standard ...

  2. 【bzoj4500】矩阵 带权并查集

    题目描述 有一个n*m的矩阵,初始每个格子的权值都为0,可以对矩阵执行两种操作: 1. 选择一行, 该行每个格子的权值加1或减1. 2. 选择一列, 该列每个格子的权值加1或减1. 现在有K个限制,每 ...

  3. Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) A B C D 水 模拟 并查集 优先队列

    A. Broken Clock time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  4. [luogu P2170] 选学霸(并查集+dp)

    题目传送门:https://www.luogu.org/problem/show?pid=2170 题目描述 老师想从N名学生中选M人当学霸,但有K对人实力相当,如果实力相当的人中,一部分被选上,另一 ...

  5. Luogu 2245 星际导航(最小生成树,最近公共祖先LCA,并查集)

    Luogu 2245 星际导航(最小生成树,最近公共祖先LCA,并查集) Description sideman做好了回到Gliese 星球的硬件准备,但是sideman的导航系统还没有完全设计好.为 ...

  6. BZOJ 1370: [Baltic2003]Gang团伙(luogu 1892)(种类并查集)

    题面: bzoj题面有误,还是看luogu的吧 https://www.luogu.org/problemnew/show/P1892 题解: 种类并查集.. 因为有敌人的敌人是朋友这个条件,所以需要 ...

  7. Luogu 1525 【NOIP2010】关押罪犯 (贪心,并查集)

    Luogu 1525 [NOIP2010]关押罪犯 (贪心,并查集) Description S城现有两座监狱,一共关押着N名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨 ...

  8. 【bzoj5133】[CodePlus2017年12月]白金元首与独舞 并查集+矩阵树定理

    题目描述 给定一个 $n\times m$ 的方格图,每个格子有 ↑.↓.←.→,表示从该格子能够走到相邻的哪个格子.有一些格子是空着的,需要填上四者之一,需要满足:最终的方格图中,从任意一个位置出发 ...

  9. Luogu 3402 可持久化并查集

    点开这题纯属无聊……不过既然写掉了,那就丢一个模板好了 不得不说,可持久化并查集实现真的很暴力,就是把并查集的数组弄一个主席树可持久化. 有一点要注意的是不能写路径压缩,这样跳版本的时候会错,所以弄一 ...

  10. Luogu P2391 白雪皑皑 && BZOJ 2054: 疯狂的馒头 并查集

    4月的时候在luogu上做过 白雪皑皑 这道题,当时一遍AC可高兴了qwq,后来去了个厕所,路上忽然发现自己的做法是错的qwq...然后就咕咕了qwq 今天看到了 疯狂的馒头 ,发现一毛一样OvO.. ...

随机推荐

  1. LiV-GS: LiDAR-Vision Integration for 3D Gaussian Splatting SLAM in Outdoor Environments

    arxiv |哈工大发布 LiV-GS:户外环境中基于3D高斯泼溅的LiDAR-视觉集成SLAM系统 [LiV-GS: LiDAR-Vision Integration for 3D Gaussian ...

  2. Navicat Premium16激活码,亲测有效,安装及注册激活最全图文教程

    前言: 网上的破解套路很雷同,但是目前官网下载的Navicat Premium16软件包已经修复了永久激活的bug(流传的激活方式不行了),这里提供未更新前的软件安装包(可以永久激活). 一.下载安装 ...

  3. k8s~service和deployment中的spec.selector

    service和deployment中的spec.selector 在 Kubernetes 中,Service 和 Deployment 的 spec.selector 在使用上是有一些不同之处的, ...

  4. 05C++数据类型

    一.单精度实数float 教学视频A 例程1:金字塔的底是正方形,侧面由四个大小相等的等腰三角形构成.试编一程序,输入底和高,输出三角形的面积. #include <iostream> / ...

  5. drf知识点

    目录 drf知识点 1.web应用模式.API接口.接口测试工具postman.restful规范 2.序列化与反序列化的概念.基于django原生编写5个接口.drf介绍和快速使用.cbv源码分析 ...

  6. 【前端】display:inline-block中间的间隙

    父元素宽度800px 两个并列子元素宽度设为50%,并且使用了display:inline-block 结果一运行,两个元素不在同一行? 我查审元素,两个子元素div的宽度都是400,也没有边框,边距 ...

  7. 【Javaweb】【Servlet】简单验证用户的登陆

    点击查看代码 | jsp <%-- Created by IntelliJ IDEA. User: xrilang Date: 30/12/2021 Time: 17:31 --%> &l ...

  8. Qt开源作品44-超级曲线图表

    按照国际惯例,先吹吹牛,QCustomPlot这个开源图表组件,作者绝对是全宇宙Qt领域的天花板,设计的极其巧妙和精美,各种情况都考虑到了,将每个功能细分到不同的类,每个类负责管理自己的绘制和各种属性 ...

  9. Soulmate

    理想之所以是理想,也就是因为它只能存在于脑海中,天上月是天上月,水中花是水中花.但我们仍可以怀揣着对乌托邦的向往,所以,我对理想中的对象设想如下: 原来形容一个女子的眉眼,我总喜欢说眉眼如黛,眉如远山 ...

  10. 用 Ingram 和 masscan 来扫描全网存在漏洞的camera

    前言 大学的时候也写过和Ingram差不多的工具,不过那时候已经玩到没有兴致了,代码已不知道哪里去.没想到在Github看到了这个工具,实现思路和我的几乎一样,互联网就是这么神奇. Ingram的Gi ...