2021牛客暑期多校训练营3 - B - Black and white( 最小生成树 )

黑与白「Black and White」-crx插件 使所有背景颜色为白色,全部为黑色 只需单击一下按钮,即可将页面上的所有文本设为黑色,将所有背景颜色设为白色,从而在网络上创造视觉上的简洁性。 您还可以使用键盘快捷键Ctrl-Shift-0将所有文本变成白底黑字,并使用Ctrl-Shift-1重新加载页面并将其删除。 该扩展是根据MIT许可开放的; 随时更改它以适合您自己的需求。 支持语言:English 立即下载
题目链接:点击进入
题目

在这里插入图片描述
在这里插入图片描述

题意

全白色的 n * m 的表格,每个位置表格都有一个涂黑所需的价值 c ( i , j ) ,对于任意的 两行 与 两列 所相交的四个表格(四个交点),若是其中三个是黑色的,则第四个可以被免费涂黑。问将所有表格涂黑所需的最小代价。

思路

可以画一下矩形,对于矩形的四个顶点就相当于四条线的四个交点,观察这四个点可以看出,他们的 x 与 y 相互联系,若是任意去除其中一个顶点,则原来的 x 与 y 还是互相联系,但是若是任意去除两个顶点,则原来的 x 与 y 必然有断开联系的。所以我们只需要找最少的代价使得所有的 x 与 y 互相联系,涂黑一个方格就相当于让表格对应的 x 与 y 增加了联系,那么方格就相当于一个带边权的边,连接它对应的 x 与 y ,让所有的 x 与 y 都有联系,将 x 与 y 看作点,就相当于让 n + m 个点都在一个集合里,最少需要 n + m - 1 条边,然后,,,,最小生成树?! ( 因为 x 与 y 都是从 1 开始的,合并的时候会出错,所以我们对 y 加一个偏移量 )

代码
 //#pragma GCC optimize(3)//O3
//#pragma GCC optimize(2)//O2
#include<iostream>
#include<string>
#include<map>
#include<set>
//#include<unordered_map>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include<stack>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<fstream>
#define X first
#define Y second
#define best 131 
#define INF 0x3f3f3f3f3f3f3f3f
#define pii pair<int,int>
#define lowbit(x) x & -x
#define inf 0x3f3f3f3f
//#define int long long
//#define double long double
//#define rep(i,x,y) for(register int i = x; i <= y;++i)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double pai=acos(-1.0);
const int maxn=3e7+10;
const int mod=1e9+7;
const double eps=1e-9;
const int N=1e5+10;
 
//inline int read()
//{
//    int k = 0, f = 1 ;
//    char c = getchar() ;
//    while(!isdigit(c)){if(c == '-') f = -1 ;c = getchar() ;}
//    while(isdigit(c)) k = (k << 1) + (k << 3) + c - 48 ,c = getchar() ;
//    return k * f ;
//}

ll n,m,a,b,c,d,p,A[maxn],ans;
vector<pii>v[N];
int pre[N];
int find(int x)
{
	if(x==pre[x]) return x;
	else return pre[x]=find(pre[x]);
}

bool unions(int x,int y)
{
	int fx=find(x);
	int fy=find(y);
	if(fx!=fy)
	{
		pre[fx]=fy;
		return 1;
	}
	return 0;
}

int main() 
{
	cin>>n>>m>>a>>b>>c>>d>>p;
	A[0]=a;
	for(int i=1;i<=m*(n-1)+m;i++)
		A[i]=(A[i-1]*A[i-1]*b+A[i-1]*c+d)%p;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			v[A[m*(i-1)+j]].push_back({i,j});
	for(int i=0;i<=n+m;i++) pre[i]=i;
	for(int i=0;i<=p;i++)
	{
		for(int j=0;j<v[i].size();j++)
		{
			int x=v[i][j].first;
			int y=v[i][j].second;
			if(unions(x,y+n))
				ans+=i;
		}
	}
	cout<<ans<<endl;
	return 0;
}
 
Apache Doris集群IP变更急救指南:用Docker容器+priority_networks快速恢复FE/BE节点 本文详细介绍了Apache Doris集群在IP变更情况下的应急处理方案,通过Docker容器和priority_networks配置快速恢复FE/BE节点。文章提供了从容器化环境构建、元数据迁移到生产环境切换的全流程指南,帮助运维团队在30分钟内完成集群恢复,显著减少停机时间。 阅读详情

相关推荐

最全卷积总结篇(分组、深度可分离、空洞、转置等)

分组卷积(Group Convolution)是一种卷积操作方式,它最早在AlexNet中引入,并在深度学习中被广泛使用,尤其是在高效模型设计(如MobileNet和ResNeXt)中。分组卷积通过将输入特征通道分为若干组,并在每组内单独进行卷积操作,可以减少计算复杂度和参数量,同时有效利用模型的结构特性。分组卷积的工作原理通道分组:输入特征图的通道图为C_in,输出特征图的通道数为C_out,将每组的C_in和C_out分为G组,每组的通道数为C_in/G和C_out/G。组内卷积。

qq_44815135的博客 4218

2021牛客暑期多校训练营3 Black and white(最小生成树)

题意 有一个 n * m 的白色棋盘,每个格子(i,j)都有一个权重c(i,j),网格被染成黑色的代价是权重。 当任意两行两列的四个相交方格,其中三个是黑色,那么第四个可以不计成本的染成黑色; 求染黑棋盘的最低成本; 由于格子数量很多,用以下方法来产生权重。 A0 = a; A(i + 1) = (Ai * Ai * b + Ai * c + d) % p; 其中A(m * (i - 1) + j) 是第 i 行和第 j 列的网格的成本c(i,j); 思路 思路很巧妙,把每一行每一列看成一个点,任意两行两列

hz0010的博客 454

利用DRONEKIT-SITL + MAVPROXY + QGroundControl模拟飞行

dronekit: 一种用于无人机控制的python库。 dronekit-sitl:一种本地仿真工具,相当于本地虚拟化了一个无人机。 mavproxy:数据转发软件(类似于插线板的感觉,一个输入,多个相同的输出)。打开一个Anaconda prompt 首先激活相应的环境 然后运行如下命令: 保持2中的Anaconda prompt处于运行状态,另打开一个Anaconda prompt窗口,运行如下命令: tcp:127.0.0.1:5760: SITL默认端口,作为mavproxy的输入,把输入数据转发

Done___的博客 4344

2021牛客暑期多校训练营3 black and white(最小生成树)

题目大意 古德特有一个有n行m列的白色棋盘。 每个格子(i,j)有一个权重c(i,j)。在任何时候,网格(i,j)都可以被染成黑色,代价是c(i,j)。 古德特有一个特殊的才能。对于任意两行两列的四个相交方格,如果其中三个是黑色方格,古德特可以不计成本地将第四个方格染成黑色。 请找出染黑棋盘的最低成本。 由于格子的数量很多,我们用以下方法来产生权重。 思路: 首先我们来证明需要遍历的点数 我们可以发现,当染色点所在位置经过平移可以在图中心形成一个十字时,就可以将整个图全部染色,那么也就是说,我们至少需..

lucifer1214的博客 312

GEE开发之ERA5(气温、降水、压力、风速等)数据获取和分析

前言:ERA5主要提供DAILY和MONTHLY两大类别数据,其中主要包括气温、降水、压力、风速等。

等待着冬天的风的博客 3万+

101、LLC谐振变换器的传递函数推导

文章摘要 LLC谐振变换器的传递函数推导是电源设计的关键环节。作者通过一次炸管事故案例,揭示了忽视传递函数计算的严重后果。LLC传递函数复杂的根源在于其三个谐振元件(Lr、Cr、Lm)的变频工作特性,导致增益曲线非单调变化。文章详细介绍了采用扩展描述函数法的建模思路,指出Lm对增益曲线的重要影响,并给出了传递函数的数学表达式及频率响应特性。通过实际调试案例,作者对比了错误补偿器设计(Type II)与优化方案(Type III)的效果差异,强调了实测验证的重要性。最后总结了5条实用经验,包括留足裕度、关注启

Jack010169的博客 152

B - Black and White -构造. Black and White

#include&lt;bits/stdc++.h&gt; using namespace std; # define inf 0x3f3f3f3f3f # define maxn 10001 pair&lt;int,int &gt;q[maxn]; char a[1500][100]; int main() { freopen("black.in","r",stdin); fr...

BePosit的博客 747

直击高频编程考点:字符串知识及经典算法题总结

字符串相关基本练习题总结(最长公共子串、最长回文子串、最长无重复字符子串、最小覆盖子串、字符串相乘、中文数字表达转实际数字格式等)

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 172万+

2021牛客暑期多校训练营3 B-Black and white(思维+最小生成树)

B-Black and white 效仿codeforces1012 B. Chemical table(并查集+思维),只不过边带权,是的n+m个点联通,显然就是求最小生成树。 Code1 Kruskal O(n2log⁡n2)O(n^2\log n^2)O(n2logn2) #include<bits/stdc++.h> using namespace std; using ll=long long; template <class T=int> T rd() { T r

Fighting_Peter的博客 358

面向精准医疗的多模态影像融合:实现前列腺MRI与大病理切片的三维配准与空间重建研究

亲爱的同学,当你能完整实现“前列腺MRI与大病理组织学图像的3D配准及体素重建”,你会发现医学影像交叉领域的毕设课题充满挑战与乐趣。我们将从临床需求出发,拆解3D配准与体素重建的核心技术,带你从原理到代码实现完整流程,让你的毕设不仅能顺利完成,更能体现临床应用价值。,让MRI和病理图像在同一空间对齐,能实现“术前影像-术后病理”的精准关联,为前列腺癌的精准诊疗、预后评估提供关键依据——这一课题既有技术挑战性,又有临床意义,是毕设的优质选择。(如NCC、Dice、配准时间),用数据证明方法的优越性。

m0_71589036的博客 4717

【WRF-DART第一期】WRF/DART概述

【WRF-DART第一期】WRF/DART概述

WW、forever的博客 107

2021牛客暑期多校训练营3 B.Black and white 最小生成树

原题链接:https://ac.nowcoder.com/acm/contest/11254/B 目录题意分析Code 题意 你需要将n*m的矩阵全部变成黑色(初始为白色),每个点都有一个花费,并且如果任意一个矩阵的三个顶点为黑,那么剩下那个顶点自动变黑,问最小的花费。 分析 根本就没往图这方面想,题目还是具有很大的欺骗性。如果自己手画一下的话,很容易发现其实最少只要涂n+m-1个点就可以了,再与行和列联系一下,不就是以行列为点的最小生成树吗? 我们再仔细分析一下,如果(x1,y1)(x2,y2)(x1,y

kaka03200的博客 200

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

2021牛客暑期多校训练营3 B Black and white 最小生成树 + 思维

传送门 文章目录题意:思路: 题意: 思路: 对于每个数的位置(i,j)(i,j)(i,j),如果将这个位置染黑,那么我们连一个i−>j+ni->j+ni−>j+n的边,可以发现我们的操作不影响连通性。如果想要全部染黑等价于将其变成联通图。 所以跑一遍最小生成树即可,用克鲁斯卡尔的话需要桶排。 // Problem: Black and white // Contest: NowCoder // URL: https://ac.nowcoder.com/acm/contest/11254

m0_51068403的博客 267

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

2021牛客暑期多校训练营3 B Black and white prim 思维+最小生成树

题意 给你一个n∗mn*mn∗m的矩阵,每个矩阵有一个权值,当一个正方形中三个点均已涂黑后,第四个点可免费涂黑,问将所有点涂黑所需的最小花费。 分析 所有点涂黑相当于将每行和每列均相连,c[i][j]=wc[i][j]=wc[i][j]=w相当于从iii行走到jjj列所花费权值为www,建图跑primprimprim最小生成树即可。 代码 #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pai

weixin_45765224的博客 313

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

2021牛客暑期多校训练营3

2021牛客暑期多校训练营3 文章目录2021牛客暑期多校训练营3B: [Black and white](https://ac.nowcoder.com/acm/contest/11254/B)解释代码C:[Minimum grid](https://ac.nowcoder.com/acm/contest/11254/C)解释代码E: [Math](https://ac.nowcoder.com/acm/contest/11254/E)解释代码F:[24dian](https://ac.nowcoder.

qq_45604735的博客 184

2021牛客暑期多校训练营3 B Black and white

B Black and white 题目链接: 第三场B题 题目大意: 用题目所给算法给你一个矩阵,将一个点涂黑的花费为该点上的值,如果一个2*2的区域内已经有了三个位置被涂黑,涂黑第四个位置不需要代价,问涂黑整个矩阵的最小代价。 题解: 可以证明涂黑整个矩阵只需要首先涂黑n+m-1个点,当然这n+m-1个点需要达到某种条件,即任意一个点所在的行和列都存在被涂黑的点。 以下几个图符合条件: 如果直接对于矩阵来思考最小值比较困难,不如换个思路: 可以用矩阵来表示两个点连边的代价(如p[i][j]=k表

qq_52402041的博客 533

2021牛客暑期多校训练营3 B_Black and white

原题传送门:B_Black and white Prim 算法理解及模板: 传送门 本题大佬详解(思路及Kruskal方法):传送门 本题队友大佬详解及坑(Prim方法): 传送门 题目大意: 一个 n∗mn*mn∗m 的全白的棋盘,每个格子都有一个权值,涂黑需花费权值。Goodeat 有一个技能,棋盘中任意一个矩形的三个格子涂黑后,则第四个格子无需花费权值就能涂黑。问最少花费多少权值。 思路: 列举几种方案后,可以发现当每行每列的格子中都有一个涂黑时,在棋盘中就可以构成四个角为三白一黑的矩阵,而这种.

m0_46626543的博客 249

Black and white(巧妙转换,思维,最小生成树)2021牛客暑期多校训练营3

2021牛客暑期多校训练营3 B. Black and white 题意: ​ 给一个矩阵,根据游戏规则去涂色,让求最小权值和。 复盘: ​ 要求权值和最小,即使要涂色的格子数最小,根据规则较容易推出对于 n*m 的矩阵,需要 n+m-1 格子涂色,分别是每行对应一个格子,每列对应一个格子,减去重复的一个(例如:将第一列和第一行先涂色,n+m-1 个格子,那么剩下格子都会免费被涂色) ​ 比赛时推出 n+m-1 这个结论就十分happy,直接去打了一个先遍历选出每一行的最小值(并打上标记),再在剩下的遍历去

yezzz的博客 331

2021牛客暑期多校训练营3 B Black and white(可做板子)

题意翻译如下: Goodeat 有一个白色的棋盘,有 n 行和 m 列。 每个网格 (i, j) 都有一个权重 c(i, j)。 在任何时候,网格 (i, j) 都可以以 c(i, j) 为代价染成黑色。 Goodeat 有一种特殊的才能。 对于任意两行两列的四个相交的正方形,如果其中三个是黑色正方形,Goodeat可以免费将第四个正方形染成黑色。 请找出染色黑色棋盘的最低成本。 由于网格较多,我们采用以下方法生成权重: A0 = 一个 A(i+1) = (Ai * Ai * b + Ai * c + d)

lcl1234567890lcl的博客 186

2021牛客暑期多校训练营3-B(Black and white)

原题链接 过程详解 kruskal #include <iostream> #include <algorithm> using namespace std; typedef long long ll; const int N = 3e7 + 10; const int M = 5010; struct Node{ int x, y; // x, y坐标 ll v; // 权值 bool operator < (const Node &

多思考🤔~ 468

2021牛客暑期多校训练营3-B题

B题:Black and white 原题链接:https://ac.nowcoder.com/acm/contest/11254/B 题目大意

Nep_Genesis的博客 305

Black and white -2021牛客暑期多校训练营3

经过仔细地观察题目,我们可以发现当我们取矩阵中任意一个点时,我们都会得到这一列和这一行的贡献,故能够想到把每次获得的行列加入一个集合,若集合中包含了所有的行列说明我们一定可以构建出这个矩阵。 下面是克鲁斯卡尔的代码 #include "bits/stdc++.h" //#define int long long using namespace std; const int N = 6e3+10; int fa[N<<1]; struct node{ int x,y,v; } f[N*N

weixin_45509601的博客 181

Imprecise Computer - ( 思维 / 递推 )

题目描述 The Imprecise Computer (IC) is a computer with some structural issue that it can compare two integers correctly only when their difference is at least two. For example, IC can always correctly answer ‘4 is larger than 2’, but it can answer either ‘2 i

Cosmic_Tree的博客 1528
上一篇: Largest Rectangle in a Histogram - ( 单调栈 - 求面积最大的矩形 )
下一篇: HDU - 6958 - KD-Graph ( 二分 )
Cosmic_Tree
博客等级 码龄7年 134粉丝 337原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值