首页 > 其他分享 >题解:CF1986B Matrix Stabilization

题解:CF1986B Matrix Stabilization

时间:2024-08-22 14:51:10浏览次数:4  
标签:Stabilization Matrix int 题解 洛谷 矩阵 操作 CF1986B

洛谷传送门

题意

一个 \(n\times m\) 的矩阵,依次进行以下操作:

  1. 从 \((1,1)\) 开始遍历矩阵,找到最小的 \((i,j)\) 满足 \(a{i,j}\) 的值严格大于其所有相邻(四联通)单元格的值,如果没有则退出
  2. 将 1 操作找到的 \(a_{i,j}-1\)
  3. 返回 1 操作

求最后的矩阵。

思路

模拟,我们按照题目所说,从 \((1,1)\) 到 \((n,m)\) 依次枚举 \(a_{i,j}\),如果 \(a_{i,j}\) 是周围四个中最大的一个,进行操作。
操作:如果当前的数减 \(1\) 后不满足条件,那么就不用再进行操作,如果减 \(1\) 后任满足条件,那么它一定会减小至周围四个数的最大值,至此,输出即可。

Code

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m;
int a[105][105];
void check(int x,int y)
{
	int A,B,C,D;
	A=B=C=D=0;
	if(x-1>=1)A=a[x-1][y];
	if(x+1<=n)B=a[x+1][y];
	if(y-1>=1)C=a[x][y-1];
	if(y+1<=m)D=a[x][y+1];
	int s=a[x][y];
	if(s<A||s<B||s<C||s<D)return;
	a[x][y]=max(A,max(B,max(C,D)));
	return ;
}
signed main()
{
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int T;
	cin>>T;
	while(T--)
	{
		cin>>n>>m;
		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++)
				check(i,j);
		for(int i=1;i<=n;i++,cout<<"\n")
			for(int j=1;j<=m;j++)
				cout<<a[i][j]<<" ";
	}
	return 0;
}

本文同步发表于 洛谷.

标签:Stabilization,Matrix,int,题解,洛谷,矩阵,操作,CF1986B
From: https://www.cnblogs.com/GCSG01/p/18373837

相关文章

  • 题解:P7020 [NWRRC2017] Boolean Satisfiability
    题目传送门题目大意给定一个由大小写字母(变量),|和~组成的布尔代数式,变量可以任意赋值为True或False。求对于给定的变量,有多少种赋值方案使得给定的代数式值为True。思路一个一个看,首先考虑|,先假设只有|,则当代数式中有一个变量为True时,代数式的值变为True。因为每一......
  • 题解:P9788 [ROIR 2020 Day2] 区域规划
    题目传送门思路首先我们看下数据范围,$n<=3000$,范围很小,所以暴力枚举。于是第一份代码出来了。#include<bits/stdc++.h>usingnamespacestd;ints,a,b,c,d,n,m;intmain(){ ios::sync_with_stdio(false); cin.tie(),cout.tie(); cin>>n>>m; for(a=1;a<=n;a++) {......
  • 题解:P9784 [ROIR 2020 Day1] 超速
    传送门思路我们设\(T\)为所花的总时间,\(d\)为超速多少。然后不难知道$T=\sum_{i=1}^{n}\frac{l_i}{v_i+d}$,所以我们实际上是要找到符合条件最小的\(d\)。再结合题目所说最高被罚款的金额最少,然后二分枚举答案即可。时间复杂度\(O(nq\log(m))\)。AC代码#include......
  • 题解:P10892 SDOI2024
    题解:P10892SDOI2024题目传送门题目思路通过阅读题面,我们可以看出,其实对于每一次纠结,如果交出了\(\frac{n-1}{2}\)只猫猫,则剩下的为\(\frac{n+1}{2}\)只猫猫;如果交出了\(\frac{n+1}{2}\)只猫猫,则剩下的为\(\frac{n-1}{2}\)只猫猫。为了使纠结的次数尽可能小,我们要交出......
  • 启动应用程序出现pspluginwkr.dll找不到问题解决
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个pspluginwkr.dll文件(挑选合适的版本文件)把......
  • 启动应用程序出现ptpprov.dll找不到问题解决
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个ptpprov.dll文件(挑选合适的版本文件)把它放......
  • 洛谷 P2590 [ZJOI2008] 树的统计 题解
    题目大意给你一个\(N\),然后再给你两个长度为\(N\)的序列。让你构造一个仅有\(0\)和\(1\)的\(N\timesN\)的正方形,但是要满足两个序列的顺序:第一个序列指的是该正方形每一行所构成的二进制数的大小顺序。第二个序列指的是该正方形每一列所构成的二进制数的大小顺序。......
  • [ARC181C] Row and Column Order 题解
    题目大意给你一个\(N\),然后再给你两个长度为\(N\)的序列。让你构造一个仅有\(0\)和\(1\)的\(N\timesN\)的正方形,但是要满足两个序列的顺序:第一个序列指的是该正方形每一行所构成的二进制数的大小顺序。第二个序列指的是该正方形每一列所构成的二进制数的大小顺序。......
  • 题解:AT_abc352_e [ABC352E] Clique Connect
    [题目通道]([ABC352E]CliqueConnect-洛谷)鄙人今日写人生第一篇题解希望管理大大通过首先,我们先看题:它说一共有n个点,m回操作。。。每次操作都有一个Ki和CiKi代表有Ki个点,Ci代表每条边所赋的边权一看就知道这是个最小生成树的板子我使用了著名的kruskal话......
  • P10892 题解
    思路考虑贪心策略。当剩下的猫猫数量为偶数的时候,直接取出\(\large\frac{n}{2}\)只猫猫即可。否则当剩下的猫猫数量为奇数的时候,则要尽可能保持第二天猫猫的数量为偶数。则要考虑\(n-\large\frac{n-1}{2}\)和\(n-\large\frac{n+1}{2}\)哪个是偶数。第二条化简一下就......