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

P1191 矩形【洛谷算法习题】

P1191 矩形

网页链接

P1191 矩形

题目描述

给出一个n × n n \times nn×n的矩阵,矩阵中,有些格子被染成白色,有些格子被染成黑色,现要求矩阵中白色矩形的数量。

输入格式

第一行,一个整数n nn,表示矩形的大小。

接下来n nn行,每行n nn个字符,这些字符为W \verb!W!WB \verb!B!B。其中W \verb!W!W表示白格,B \verb!B!B表示黑格。

输出格式

一个正整数,为白色矩形数量。

输入输出样例 #1

输入 #1

4 WWBW BBWB WBWW WBWB

输出 #1

15

说明/提示

对于30 % 30\%30%的数据,n ≤ 50 n ≤ 50n50

对于100 % 100\%100%的数据,n ≤ 150 n ≤ 150n150

解题思路

本题核心是悬线法+区间枚举优化,高效统计矩阵中的全白矩形数量。遍历矩阵的每一行作为矩形的底边,维护数组h[j]表示第j列从当前行向上连续的白色格子数,遇到黑色格子则将值清零。针对每一行,枚举左边界j并向右扩展右边界k,遇到黑色格子立即剪枝中断,同时记录区间[j,k]h的最小值,该最小值即为当前区间能构成的合法白色矩形数量,将其累加到总答案中。算法时间复杂度为O ( n 3 ) O(n^3)O(n3),结合黑格剪枝优化,完美适配n ≤ 150 n≤150n150的数据规模。

总结

核心逻辑:悬线法记录列连续白格高度,枚举左右区间计算最小高度,累加得到白色矩形总数。
关键操作:维护连续白高数组、区间枚举剪枝、最小高度累加计数。
效率保障:O ( n 3 ) O(n^3)O(n3)复杂度适配题目约束,黑格剪枝大幅提升实际运行效率。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefvector<vector<ll>>vvt;typedefpair<ll,ll>pll;constll N=1e3+10;constll p=1e9+7;constll INF=1e18;constll M=1e6+10;intmain(){ios::sync_with_stdio(false);cin.tie(0);intn;cin>>n;vector<int>h(n+2,0);intans=0;for(inti=1;i<=n;++i){for(intj=1;j<=n;++j){charc;cin>>c;if(c=='W')h[j]++;elseh[j]=0;}for(intj=1;j<=n;++j){intcur=h[j];for(intk=j;k<=n;++k){if(!h[k])break;cur=min(cur,h[k]);ans+=cur;}}}cout<<ans<<'\n';return0;}
http://www.jsqmd.com/news/719282/

相关文章:

  • 用C语言和Visual Studio 2022玩转MIDI:手把手教你编程生成《荒天帝》笛子BGM
  • 高斯记号[x]和{x}:从数论到算法竞赛,LeetCode和蓝桥杯里那些隐藏的取整技巧
  • 为AI助手构建持久化记忆:OpenClaw-HydraDB插件实战指南
  • AIGC工具平台-Tauri2.x智能工具桌面介绍与使用
  • 睿家诚家具维修:吴江正规的软硬包装饰定制施工公司怎么联系 - LYL仔仔
  • 2026贵阳系统门窗工厂直营选购指南:5大品牌深度横评与透明价格体系 - 优质企业观察收录
  • CompressO终极指南:如何免费将视频图片压缩90%以上大小
  • 魔兽争霸3终极优化指南:5分钟解锁完美游戏体验
  • 【AI面试八股文 Vol.1.2 | 专题2:Harness层】Harness层职责边界:调度、监控、错误隔离、上下文注入
  • 免费开源PCB查看器OpenBoardView:电路板分析的终极解决方案
  • QQ音乐加密文件终极解密方案:3分钟解锁你的音乐宝藏
  • Oumuamua-7b-RP实操手册:自定义角色模板编写、保存与跨会话复用方法
  • Ohook:Windows软件许可验证的透明化重构方案
  • Claudia:轻量级流程编排引擎,从脚本到自动化平台的实践指南
  • 大一C语言课设别慌!拆解‘网吧管理系统’源码,教你一周搞定验收(含调试技巧)
  • 别再买电感电容了!用Matlab脚本+ADS,教你用PCB微带线自己“画”出来(附完整代码)
  • 麒麟Kylin V10系统下MySQL容器内存占用异常问题深度解析与完整解决方案
  • Cursor Pro免费激活终极指南:三步解决AI编程助手试用限制问题
  • Raft协议深入刨析和总结
  • 雷达与通信工程师必看:如何用空间平滑MUSIC算法解决实际中的‘信号相干’难题?
  • 智能硬件开发:利用LFM2.5-1.2B-Instruct为DHT11温湿度传感器生成数据解析逻辑
  • 告别光盘时代!WinCDEmu:Windows上最便捷的虚拟光驱工具完全指南
  • 3步搞定黑苹果!OpCore-Simplify:让OpenCore EFI配置像搭积木一样简单
  • CentOS7服务器运维:当服务异常时,我是如何用journalctl和/var/log日志快速定位问题的
  • Uncle小说:打造个人专属电子书库的终极指南
  • Winhance中文版:终极Windows系统优化与管理完整指南
  • python setup.cfg
  • R3nzSkin国服换肤终极指南:3分钟解锁所有英雄皮肤
  • 别再只会调库了!手把手带你用STM32F103C8T6的USART,从零实现一个自定义串口数据包解析器
  • 从人体姿态识别到3D查看器:手把手教你用CPU模式跑通Azure Kinect Body Tracking SDK