CF1012B Chemical table
给你一个 \(n\times m\) 的矩形,一开始有 \(q\) 个格子上被标记。对于任意两行两列,如果交汇的四个格子中有三个被标记,那么第 \(4\) 个会被自动标记。问你至少需要手动标记几个格子,使得整个矩形内的格子都被标记。
\(n,\ m,\ q\leq2\times10^5\)
并查集,构造
把元素 \((x,\ y)\) 看做二分图的一条边 \((x,\ n+y)\)
目标是将它变成完全二分图
而标记其他点的条件 \((x_1,\ y_1),\ (x_1,\ y_2),\ (x_2,\ y_1)\to(x_2,\ y_2)\) 并不改变二分图中连通分量个数
所以对于二分图的某一个连通分量必定可以通过如上条件变成一个完全二分子图
所以答案即为联通所有连通分量的边数,即为 \(\verb|连通分量个数|-1\)
代码
#include <bits/stdc++.h>
using namespace std;
const int maxn = 4e5 + 10;
int n, m, q, ans, par[maxn];
int find(int x) {
return par[x] == x ? x : par[x] = find(par[x]);
}
void unite(int x, int y) {
if ((x = find(x)) != (y = find(y))) {
par[x] = y, ans++;
}
}
int main() {
scanf("%d %d %d", &n, &m, &q);
for (int i = 1; i <= n + m; i++) {
par[i] = i;
}
while (q--) {
int x, y;
scanf("%d %d", &x, &y);
unite(x, n + y);
}
printf("%d", n + m - ans - 1);
return 0;
}
\(orz\ \color{black}{P}\color{red}{inkrabbit}\)
CF1012B Chemical table的更多相关文章
- CF1012B Chemical table 题解【二分图】【构造】
有意思的网格图转化.CF Div.1 还是挺有难度的. 注:由于本题有较完美的中文题面,所以不贴英文题面. 英文题面 题目描述 Innopolis 大学的教授正努力研究元素周期表.他们知道,有 \(n ...
- CF1012B Chemical table(构造)
[Luogu-CF1012B] 还有重题 P5089[eJOI2018]元素周期表 题解原话 : 可以发现这个过程是不改变二分图中的连通分量的个数的 答案就是 连通分量数-1 证明 : 设一行或一列为 ...
- CF1012B Chemical table 构造_思维_并查集
我们可以将横坐标和纵坐标看成是点.发现这些点之间是有传递性的. 题中说明,如果有矩阵中三个顶点被选,则底角的点也会被覆盖,发现这些点之间是有传递性的.那么我们最终达到的目的就是使整个图中只有 111 ...
- Chemical table CFR500 div2D(并查集)
给定的一个n*m的区域内,给出一些点的坐标,这些点上有一个元素,如果在矩形的子矩形的三个点都有元素,那么第四个点的元素可以自己产生,其他的元素需要购买,问最少需要购买多少中元素才可以把这个区域给填满. ...
- Chemical table CodeForces - 1012B
题意: 一个棋盘 对于任何一个棋盘中的矩形 如果 任意三角存在棋子 则第四个角会自动生成一个棋子 求铺满整个棋盘 我们至少要向棋盘里加多少枚棋子 解析: 这题就是求图中有多少个连通图,可以直接dfs ...
- 洛谷 P5089: CodeForces #500 (Div. 1) B / 1012B : Chemical table
题目传送门:洛谷P5089. 题意简述: 一张 \(n \times m\) 的表格,有一些格子有标记,另外一些格子没有标记. 如果 \((r_1,c_1),(r_1,c_2),(r_2,c_1)\) ...
- Codeforces Round #500 (Div. 2) D - Chemical table
首先我们如果满足三缺一,那么必有同行和同列的点 如果两行有同列的数,我们可以设想,他们最后会全部填充成为两者啥都有的情况 显然这个是个并查集 现在我们有了很多集合,每个集合自己可以进行三缺一操作,但是 ...
- Codeforces 1012B Chemical table (思维+二分图)
<题目链接> 题目大意:给定一个n*m的矩阵网格,向其中加点,对于一个组成矩形的四个点中如果有三个点中有元素,那么第四个点中会自动产生新的元素.问你最少再加多少个点能够填满这个网格.解题分 ...
- CF1013D Chemical table
题目链接:http://codeforces.com/contest/1013/problem/D 题目大意: 给出一个 \(n \times m\) 的表格,表格上有一些初始点.若有这样的三个点:\ ...
随机推荐
- tensorflow机器学习模型的跨平台上线
在用PMML实现机器学习模型的跨平台上线中,我们讨论了使用PMML文件来实现跨平台模型上线的方法,这个方法当然也适用于tensorflow生成的模型,但是由于tensorflow模型往往较大,使用无法 ...
- 服务化改造实践 | 如何在 Dubbo 中支持 REST
什么是 REST REST 是 Roy Thomas Fielding [[1]](#fn1) 在 2000 年他的博士论文 [[2]](#fn2) “架构风格以及基于网络的软件架构设计” 中提出来的 ...
- php 日期时间类型带毫秒
<?php date_default_timezone_set('PRC'); $mtimestamp = sprintf("%.3f", microtime(true)); ...
- WordPress在Centos下Apache设置伪静态方法
1.设置httpd.conf文件 1.1 添加或取消注释这段代码 LoadModule rewrite_module modules/mod_rewrite.so 1.2 运行httpd -M查看这个 ...
- iptables配置管理
iptables规则 内核netfilter的规则: iptables的规则: 基本操作 实践:往iptables中插入一条规则:禁止基于端口号为22的所有客户端访问(等于是禁止基于SSH的客户端连接 ...
- 20190325-HTML框架、audio标签、vedio标签、source标签、HTML表单
目录 1.HTML框架 frameset:框架标记 frame:框架内文件 iframe:内嵌框架 2.audio标签 src:URL(可以用source标签替代) autoplay:自动播放 pre ...
- checkbox在vue中的用法小结
关于checkbox多选框是再常见不过的了,几乎很多地方都会用到,这两天在使用vue框架时需要用到checkbox多选功能,实在着实让我头疼,vue和原生checkbox用法不太一样,之前对于vue插 ...
- Design Mobile实现国际化
参考:https://mobile.ant.design/components/locale-provider-cn/
- 在ubuntu16.04中初次体验.net core 2.0
.net core运行在Linux中的例子.文章已经很多了,看了一些之后也想体验一下,顺便记录一下…… 环境:win10 1709.它内置的Linux子系统(这里安装的是Ubuntu 16.04) 一 ...
- Java内存管理的进一步理解-模拟过程图解
Java内存管理的进一步理解-模拟过程图解--转载 java的内存管理分为: 1.堆内存:2.栈内存:3.方法区:4.本地方法区 /* 1:方法区 方法区存放装载的类数据信息包括: ...