news 2026/4/29 13:24:28

P1191 矩形【洛谷算法习题】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 13:14:25

Cursor Pro免费激活终极指南:三步解决AI编程助手试用限制问题

Cursor Pro免费激活终极指南&#xff1a;三步解决AI编程助手试用限制问题 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached y…

作者头像 李华
网站建设 2026/4/29 13:06:24

开发者技能图谱:从知识地图到个人与团队成长实践指南

1. 项目概述&#xff1a;一个面向开发者的技能图谱仓库 最近在GitHub上闲逛&#xff0c;发现了一个挺有意思的仓库&#xff0c;叫 estevg/skills 。初看标题&#xff0c;你可能会以为这是一个关于个人技能展示的简历项目&#xff0c;或者是一个学习路线图。但点进去之后&…

作者头像 李华
网站建设 2026/4/29 13:01:53

FilePizza:浏览器直连文件传输,告别第三方服务器的革命性方案

FilePizza&#xff1a;浏览器直连文件传输&#xff0c;告别第三方服务器的革命性方案 【免费下载链接】filepizza :pizza: Peer-to-peer file transfers in your browser 项目地址: https://gitcode.com/GitHub_Trending/fi/filepizza 还在为文件传输速度慢、隐私泄露而…

作者头像 李华