------------恢复内容开始------------

题意

给出一个\(n*n\)的矩阵,矩阵中,有些格子被染成白色,有些格子被染成黑色,现要求矩阵中白色矩形的数量

分割线

Ⅰ.暴力出奇迹!!!

①枚举矩形左上角的点(两重循环)
②枚举矩形的长和宽(两重循环)
③一个点一个点得验证矩形是否合法(两重循环)

但是非非非非常明显的,步骤三可以优化掉。

\(我们想要的不过是矩形内都是白色,二位前缀和可以很方便的做到。\)
\(假如白色是代表1,黑色代表2,那么矩形的值应该是它面积的大小\)

\(所以4重循环还是很快的!!\)

#include <bits/stdc++.h>
using namespace std;
int n,sumn[159][159];
char a[159][159];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
int k=0;
if(a[i][j]=='W') k=1;
sumn[i][j]=sumn[i-1][j]+sumn[i][j-1]+k-sumn[i-1][j-1];
}
int ans=0;
for(int i=1;i<=n;i++)//枚举长
for(int j=1;j<=n;j++)//枚举高
for(int q=1;q+i-1<=n;q++)
for(int w=1;w+j-1<=n;w++)
{
int temp;
int x=i+q-1,y=j+w-1;
temp=sumn[x][y]-sumn[q-1][y]-sumn[x][w-1]+sumn[q-1][w-1];
if(temp==i*j) ans++;
}
cout<<ans;
}

Ⅱ.\(n^3\)做法

虽然看懂了,但感觉并不是很好理解

想了解请点我(●'◡'●)

------------恢复内容结束------------

最新文章

  1. 深入浅出React Native 2: 我的第一个应用
  2. HashMap原理分析
  3. [Tex学习笔记]积分平均
  4. 二分+动态规划 POJ 1973 Software Company
  5. SVN不能提交时的处理
  6. Mapreduce-Partition分析
  7. Spark Streaming入门
  8. git工具——对比文件的不同
  9. Signalr实时通讯
  10. JFinal框架
  11. Java 工程师成神之路 | 2019正式版
  12. angualrjs 配置超时时间
  13. PAT A1029 Median (25 分)——队列
  14. 深度学习课程笔记(八)GAN 公式推导
  15. Linux基础第一课——基础知识了解
  16. Oracle数据库查询表信息/列信息(列ID/列名/数据类型/长度/精度/是否可以为null/默认值/是否自增/是否是主键/列描述)
  17. thinkpad X1 extreme 安装Ubuntu 18.04.2 LTS
  18. 2018-2019-2 网络对抗技术 20165324 Exp2: 后门原理与实践
  19. 解析XML:DOM,SAX,PULL
  20. ping正常但是ssh到linux服务器很卡的解决方法

热门文章

  1. for循环,for…in循环,forEach循环的区别
  2. 学习Salesforce | Platform Developer Ⅰ 平台初级开发认证考试指南及备考资源
  3. Delphi TMemo 可以显示、编辑多行文本
  4. 读写SQL脚本进行创建表、视图和存储过程
  5. linux下的信号量PV操作进阶之路
  6. week homework: 大家来找茬
  7. Java匹马行天下之JavaSE核心技术——异常处理
  8. 13. 罗马数字转整数----LeetCode
  9. 一道简单的SQL注入题
  10. 前端学习笔记-H5