做完之后看到题解里面很多bfs,dfs,甚至还有dp?

写了一个不知道怎么称呼它的方法,暂且叫他乱搞吧。 用数组a[][]预处理出以当前行作为最底层,这一列从上往下的最长的1的长度。 如果这个格子为0的话,a[i][j]就是0,当然也可以特殊标记一下(比如我就用的-1) 统计答案的时候,就枚举每个非0的格子作为最底层第一个格子依次往右边拓展,记录途中最短的从上往下1的长度。由于是正方形,能构成的正方形的边长为min(pos-j+1,m)min(pos−j+1,m)(见代码)。当纵向延伸的长度大于途中最短的从上往下1的长度时,后面就已经不能再构成正方形了,就可以break掉

当然还可以用单调队列,悬线法什么的做,不过这道题的数据范围是真的小。

和之前在纪中培训的这道题有点像:餐桌 数据范围还要小一点来着。

 /*
ID: Starry21
LANG: C++
TASK: range
*/
#include<iostream>
#include<string>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
#include<vector>
using namespace std;
#define N 255
#define ll long long
#define INF 0x3f3f3f3f
int n;
char s[N][N];
int a[N][N];
int ans[N];
int main()
{
//freopen("range.in","r",stdin);
//freopen("range.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%s",s[i]+);
for(int j=;j<=n;j++)
if(s[i][j]=='') a[i][j]=-;
}
for(int i=;i<=n;i++)
if(a[][i]!=-) a[][i]=;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
if(a[i][j]==-) continue;
if(a[i-][j]==-) a[i][j]=;
else a[i][j]=a[i-][j]+;
}
/*for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
printf("%2d ",a[i][j]);
puts("");
}*/
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
if(a[i][j]>)
{
int pos=j,m=INF;
while(a[i][pos]>)
{
m=min(m,a[i][pos]);
if(pos-j+>m) break;
ans[min(m,pos-j+)]++;
//if(min(m,pos-j+1)==2) printf("%d %d %d\n",i,j,pos);
pos++;
}
}
for(int i=;i<=n;i++)
if(ans[i]>)
printf("%d %d\n",i,ans[i]);
return ;
}

Code

最新文章

  1. C#调用win32 api程序实例
  2. go语言文件操作,这期资料比较详细( 欢迎加入go语言群: 218160862 )
  3. hdu 5944 Fxx and string
  4. 学习ASP.NET MVC(八)——“Code First Migrations ”工具
  5. http://jingyan.baidu.com/article/4dc40848e7b69bc8d946f127.html
  6. C++中,如何在标准库的std::string和常用库(Qt,VC等)的QString之间进行选择?
  7. 响应式web之媒体查询(一)
  8. android水平循环滚动控件
  9. [每日一题] OCP1z0-047 :2013-08-01 正则表达式--- REGEXP_REPLACE 函数
  10. apache 配置静态文件缓存和开启gzip压缩
  11. Mysql双机热备配置(超详细多图版)
  12. hi-nginx-javascript vs node.js
  13. VisualStudio移动开发(C#、VB.NET)Smobiler开发平台——ImageTabBar控件的使用方式
  14. java Builder模式创建不可变类
  15. Eclipse 各版本号
  16. 使用navicat 连接mysql出现1251错误
  17. [CF896C]Willem, Chtholly and Seniorious(珂朵莉树)
  18. 原创:vsphere概念深入系列二:vSphere交换机命令行查看排错
  19. Git在Eclipse中的使用
  20. hdoj1005(循环,找规律)

热门文章

  1. 【hiho1035】自驾旅行III
  2. RocketMQ和Kafka的差异对比
  3. Java架构师面试题——JVM性能调优
  4. HTML中的表格和图像总结
  5. UOJ #460. 新年的拯救计划 神仙题+构造
  6. [HG]子树问题 题解
  7. HGOI 20190519 题解
  8. 文章翻译:ABP如何在EF core中添加数据过滤器
  9. Java面试题收集(二)
  10. String、toString、String.valueOf()三个有啥区别?