CF1012B Chemical table(构造)】的更多相关文章

我们可以将横坐标和纵坐标看成是点.发现这些点之间是有传递性的. 题中说明,如果有矩阵中三个顶点被选,则底角的点也会被覆盖,发现这些点之间是有传递性的.那么我们最终达到的目的就是使整个图中只有 111 个集合.而将两个集合合并的代价是新覆盖一个点.于是我们只需统计初始局面中图中有多少个集合,并输出集合数量 - 1 即可. Code: #include<cstdio> #include<iostream> using namespace std; const int maxn = 20…
$CF1012B Chemical table 给你一个 \(n\times m\) 的矩形,一开始有 \(q\) 个格子上被标记.对于任意两行两列,如果交汇的四个格子中有三个被标记,那么第 \(4\) 个会被自动标记.问你至少需要手动标记几个格子,使得整个矩形内的格子都被标记. \(n,\ m,\ q\leq2\times10^5\) 并查集,构造 把元素 \((x,\ y)\) 看做二分图的一条边 \((x,\ n+y)\) 目标是将它变成完全二分图 而标记其他点的条件 \((x_1,\ y…
有意思的网格图转化.CF Div.1 还是挺有难度的. 注:由于本题有较完美的中文题面,所以不贴英文题面. 英文题面 题目描述 Innopolis 大学的教授正努力研究元素周期表.他们知道,有 \(n \times m\) 种元素,形成了一个 \(n\) 行 \(m\) 列的矩阵. 研究表明,如果元素周期表上有一个元素 A,且元素 B 与它在同一列(A 与 B 不能在同一周期),元素 C 在同一周期(A 与 C 不能在同一列),那么,科学家就可以用这三种元素通过核聚变合成第四种元素 D 的样品,…
[Luogu-CF1012B] 还有重题 P5089[eJOI2018]元素周期表 题解原话 : 可以发现这个过程是不改变二分图中的连通分量的个数的 答案就是 连通分量数-1 证明 : 设一行或一列为一个点,每一个单独的行或列都可以通过一次操作搞满 #include<bits/stdc++.h> int n,m,q,x,y,S; int v[400001]; int h[400001],nxt[400001],to[400001],tot; inline void ins(int x,int…
D. The table 题目连接: http://www.codeforces.com/contest/226/problem/D Description Harry Potter has a difficult homework. Given a rectangular table, consisting of n × m cells. Each cell of the table contains the integer. Harry knows how to use two spells…
最简单的构造式就是一个空构造式{},用于创建一个空table. 构造式还可以用于初始化数组.例如,以下语句:days = {"Sunday", "Monday", "Tuesday", "Wednesday",        "Thursday", "Friday", "Saturday"}会将days[1]初始化为字符串“Sunday”.days[2]初始化为&qu…
原文链接https://www.cnblogs.com/zhouzhendong/p/CF1098B.html 题解 首先,我们来证明一个结论: 合法的矩阵要么满足每列只有两种字符,要么满足每行只有两种字符. 然后直接枚举就好了. 代码并不是那么好写. 代码 #include <bits/stdc++.h> using namespace std; typedef long long LL; LL read(){ LL x=0; char ch=getchar(); while (!isdig…
给定的一个n*m的区域内,给出一些点的坐标,这些点上有一个元素,如果在矩形的子矩形的三个点都有元素,那么第四个点的元素可以自己产生,其他的元素需要购买,问最少需要购买多少中元素才可以把这个区域给填满. 对于给出点的,先用并查集把x轴上和y轴上有联系的点都联系起来,并且可以顺便把出现过的x和y的数值标记起来. 如果我把所有的点分成了n块,那么的需要添加n-1个元素来把这n块连接起来.对于没有出现的x和y的数值,我需要额外买一个元素来填充这个点. 因为我已经在一个块内的点一定是有联系的,而另一个块的…
题目链接 \(Description\) 给定一个\(n\times m\)的矩阵\(A_{i,j}\),每次可以将一列或一行取负.求一个方案使得若干次操作后,每行每列的和都非负. \(n,m\leq100,\ 元素绝对值|A_{i,j}|\leq100\). \(Solution\) 容易想到每次找和为负的一行或一列取负.这样做正确性及复杂度会有啥问题么? 注意到每次取负,所有数的和是单调递增的,所以一定会结束.且每次和至少会增加\(2\)(\(-1\to1\)),而所有数的和最小是\(-10…
题意: 一个棋盘 对于任何一个棋盘中的矩形 如果 任意三角存在棋子 则第四个角会自动生成一个棋子  求铺满整个棋盘 我们至少要向棋盘里加多少枚棋子 解析: 这题就是求图中有多少个连通图,可以直接dfs  也可以 并查集 为什么是求多少个连通图呢 并查集: #include <bits/stdc++.h> #define mem(a, b) memset(a, b, sizeof(a)) #define rap(i, a, n) for(int i=a; i<=n; i++) #defin…