当前位置: 首页 > news >正文

【题解】Codeforces 1986B Matrix Stabilization

题目大意

给定一个矩阵,每次选择一个比它所有“邻居”都大的项,不断减一直到它不满足以上条件,求修改完后的矩阵。

“邻居”的定义是左右相邻或上下相邻,不包括对角线的情况。

解题思路

我们首先要明白一点,别看题目中讲要找坐标小的先修改,实际上修改顺序是不重要的。

而要明白这一点我们又要明白另一点,那就是所有被选中的项都互不是“邻居”。这一点很好想,假设有两个项 \(a_{i,j}\)\(a_{i+1,j}\),它们互为邻居。你先修改 \(a_{i,j}\),修改完成后 \(a_{i,j}\) 应该等于它所有“邻居”中的最大值,而 \(a_{i+1,j}\) 也是它的邻居,那么自然 \(a_{i+1,j}\) 就不会比 \(a_{i,j}\) 要大,不会被选中。

明白了这一点,刚才那一点也就好想了,因为不同被选中的项是互不干扰的,它们的“邻居”自始至终都不会变,先修改哪一个都无所谓。

那么我们从 \(a_{1,1}\) 依次遍历到 \(a_{n,m}\),看 \(a_{i,j}\) 是否满足比所有“邻居”大的条件,如果是,那么就把 \(a_{i,j}\) 直接修改为所有“邻居”中的最大值。全部修改完成后就是所求矩阵了。

代码实现

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int t,n,m,maxx;
int a[110][110];
int main(){scanf("%d",&t);while(t--){memset(a,0,sizeof(a));scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){scanf("%d",&a[i][j]);}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){maxx=0;maxx=max(maxx,max(a[i+1][j],max(a[i-1][j],max(a[i][j+1],a[i][j-1]))));if(maxx<a[i][j]) a[i][j]=maxx;}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){printf("%d ",a[i][j]);}printf("\n");}}return 0;
}

时间复杂度 \(O(nm)\),题目中说所有 \(n \times m\) 的和不会超过 \(2 \times 10^5\),稳过。

注意事项

  • 如果不特判边界的话记得每次清空矩阵 \(a\),否则在遍历到 \(a\) 的边界时会受到上一次输入的干扰。
http://www.jsqmd.com/news/79268/

相关文章:

  • 【题解】Luogu P6092 [CEOI2012] 工作规划
  • 告别文件整理拖延症!快速找关键字 TXT + 批量复制到目标文件夹,躺平搞定
  • [Non]树上乘法
  • 【笔记】强连通分量
  • 告别信息传递繁琐步骤!批量查询+手机条形码一键发,1次搞定全传递
  • 视频剪辑软件电脑版排行榜,2025年度前十名软件推荐
  • 《追问者宪章》完整版
  • 重练算法(代码随想录版) day38 - 动态规划part6
  • 笑不活!男人假装爱你,7 个 “演技信号” 速查!
  • 1-Year XTOOL D9 Update Service: Latest Diagnostics for European/American Vehicles
  • 【笔记】最近公共祖先 Tarjan
  • Error occurred during initialization of VMCould not reserve enough space for object heap
  • 【算法题】滑动窗口(一)
  • 东芝与Quantum Corridor实现量子安全网络通信重大突破
  • 基于java的SpringBoot/SSM+Vue+uniapp的零工市场服务系统的详细设计和实现(源码+lw+部署文档+讲解等)
  • 为什么越来越多的IT技术人员转行网络安全?零基础入门到精通,收藏这一篇就够了
  • 甲骨文AI投资支出激增致股价创24年最大跌幅
  • 基于java的SpringBoot/SSM+Vue+uniapp的旅游出行指南系统的详细设计和实现(源码+lw+部署文档+讲解等)
  • HTTP协议在C#大文件上传中如何处理重试逻辑?
  • 转行IT最吃香的六大岗位:从零到精通,就业无忧!
  • 【笔记】基本数论
  • 19、将 Snort 规则转换为 iptables 规则
  • 计算计算机专业内卷严重,普通毕业生何去何从?​这个风口行业缺口炸了,现在入行正当时!
  • 【Java毕设全套源码+文档】于 SpringBoot的干洗店预约洗衣系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 23、深入解析 fwsnort 与 psad 的协同防御机制
  • 24、结合 psad 和 fwsnort 增强网络安全防护
  • 22、深入解析fwsnort:网络攻击检测与响应的利器
  • 【Java毕设全套源码+文档】基于 Web 的高校教师工作量管理系统设计与实现(丰富项目+远程调试+讲解+定制)
  • Qt Creator中pro文件添加外部动态库的方法
  • 芯祥联科技SNMP协议栈产品形态