题解 P1191 【矩形】
3493441984zz · · 题解
本蒟蒻只会n^3
唉,还是太弱了,靠刷点水题过日子
思路:
我们枚举出矩形左下角的点,坐标为
我们以下面为例子,粗略讲一下(不会全部模拟)
样例:
那么假设我们枚举
当
我们其实可以发现就是能向上扩展的高度个矩形
当
当
当
那么到这里我们就枚举出了左下角为
而且我们可以发现,矩形个数就是能向上扩展的高度
那么我们会枚举
时间复杂度
下面是美滋滋的代码时间~~~
#include<iostream>
#include<cstdio>
#include<cstring>
#define N 157
using namespace std;
int n,now,ans;
int high[N];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
{
char in;
scanf(" %c",&in);
if(in=='W')
++high[j];
else
high[j]=0;
}
for(int j=1;j<=n;++j)
{
now=high[j];
for(int k=j;k<=n;++k)
{
if(!high[k])
break;
now=min(now,high[k]);
ans+=now;
}
}
}
printf("%d",ans);
return 0;
}