题意:

给一个1和0组成的正方形矩阵,求 四条边都由1构成的正方形的个数。

方法:

先统计矩阵中每一点,向四个方向,最多有多少个连续的1,这里用dp做也

与此同时,顺便求下 能向右下和 左上 两个方向 形成的最大的正方形的边长 (就是里面的d1[][] d2[][])

为什么朝这俩方向呢,这样方便统计最长的连续的1啊,四个方向一起好像不行啊

然后枚举边长,就没了

比赛时候看错题目,以为要实心的哎

这次题都很考思维啊,都不知道分到什么类了

这些解题方法都很明了简洁,遇到一个记住一个 恩

#include<iostream>
#include<cmath>
#include<cstdio>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std; int t,T,ans,s[1005][1005],n;
int d1[1005][1005],d2[1005][1005],dt[1005][1005],dd[1005][1005],dl[1005][1005],dr[1005][1005];
//dt(top) dd(down) dl(left) dr(right)表示该点向四个方向最长有几个1
//d1表示该点向右下对角线的最长边长(即该点向下和向右短的那条边) d2表示向左上
int main()
{
int i,j,k;
scanf("%d",&T);
t=0;
while(T--)
{
ans=0;
t++;
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
scanf("%d",&s[i][j]);
if(s[i][j]) ans++;
}
memset(dt,0,sizeof dt);
memset(dd,0,sizeof dd);
memset(dr,0,sizeof dr);
memset(dl,0,sizeof dl);
for(i=0;i<n;i++)//右下方向
{
for(j=0;j<n;j++)
{
if(s[i][j])
{
dd[i][j]=dd[i-1][j]+1;
dr[i][j]=dr[i][j-1]+1;
}
d1[i][j]=min(dd[i][j],dr[i][j]);
}
}
for(i=n-1;i>=0;i--)//左上方向
{
for(j=n-1;j>=0;j--)
{
if(s[i][j])
{
dt[i][j]=dt[i+1][j]+1;
dl[i][j]=dl[i][j+1]+1;
}
d2[i][j]=min(dt[i][j],dl[i][j]);
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
for(k=2;k<=d2[i][j];k++)//枚举边长
{
if(k<=d1[i+k-1][j+k-1])
ans++;
}
}
}
printf("Case %d: %d\n",t,ans);
}
return 0;
}

hdu4331 Image Recognition 就暴力啊。。啊。。的更多相关文章

  1. face recognition[Euclidean-distance-based loss][FaceNet]

    本文来自<FaceNet: A Unified Embedding for Face Recognition and Clustering>.时间线为2015年6月.是谷歌的作品. 0 引 ...

  2. Programming Assignment 3: Pattern Recognition

    编程作业三 作业链接:Pattern Recognition & Checklist 我的代码:BruteCollinearPoints.java & FastCollinearPoi ...

  3. 无需看到你的脸就能认出你——实现Beyond Frontal Faces: Improving Person Recognition Using Multiple Cues

    今年年初Facebook AI Research发布了一篇名为Beyond Frontal Faces: Improving Person Recognition Using Multiple Cue ...

  4. Algorithms : Programming Assignment 3: Pattern Recognition

    Programming Assignment 3: Pattern Recognition 1.题目重述 原题目:Programming Assignment 3: Pattern Recogniti ...

  5. zone.js - 暴力之美

    在ng2的开发过程中,Angular团队为我们带来了一个新的库 – zone.js.zone.js的设计灵感来源于Dart语言,它描述JavaScript执行过程的上下文,可以在异步任务之间进行持久性 ...

  6. [bzoj3123][sdoi2013森林] (树上主席树+lca+并查集启发式合并+暴力重构森林)

    Description Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数 ...

  7. HDU 5944 Fxx and string(暴力/枚举)

    传送门 Fxx and string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Othe ...

  8. 1250 Super Fast Fourier Transform(湘潭邀请赛 暴力 思维)

    湘潭邀请赛的一题,名字叫"超级FFT"最终暴力就行,还是思维不够灵活,要吸取教训. 由于每组数据总量只有1e5这个级别,和不超过1e6,故先预处理再暴力即可. #include&l ...

  9. fragment+viepager 的简单暴力的切换方式

    这里是自定义了一个方法来获取viewpager private static ViewPager viewPager; public static ViewPager getMyViewPager() ...

随机推荐

  1. poj 2299 Ultra-QuickSort(归并排序或是bit 树+离散化皆可)

    题意:给一个数组,计算需要的冒泡排序的次数,元素个数很大,不能用n^2的冒泡排序计算. 解析:这题实际上就是求逆序对的个数,可以用归并排序的方法,我这里用另一种方法写,bit树+离散化.由于元素的值可 ...

  2. 剑指offer-面试题2.实例Singleton模式

    题目:设计一个类,我们只能生成该类的一个实例 这道题显然是对设计模式的考察,很明显是单例模式.什么是单例模式呢,就是就像题目所说的只能生成一 个类的实例.那么我们不难考虑到下面几点: 1.不能new多 ...

  3. Xshell不能连接SSH的解决

    异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 重新启动看看:/etc/init.d/ssh restart (/etc/ini ...

  4. oninput,onpropertychange,onchange的使用方法和差别

    1.前言 因为工作须要,需实现一个相似于微博输入框的功能,在用户动态输入文字的时候,改动提示“您还能够输入XX字”.例如以下图所看到的: 因此,略微研究了一下oninput,onpropertycha ...

  5. openssl 安装

    六.运行“nmake -f ms\ntdll.mak install”安装编译后的OpenSSL到指定目录. 七.查看安装结果C:\usr\local\ssl或C:\openssl-0.9.8.e下包 ...

  6. Asp.net MVC razor语法参考

    Razor语法的快捷参考http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx/ 只是copy下来便于查阅! I ...

  7. 通过一张简单的图,让你搞懂JS的==运算

    == 运算的规则: undefined == null,结果是true.且它俩与所有其他值比较的结果都是false. String == Boolean,需要两个操作数同时转为Number. Stri ...

  8. php基础之 ->, =>,@,&,::,%符号

    => 是数组成员访问符号 -> 是对象成员访问符号 比如: $array = array("site map"=>"map.php"); // ...

  9. Binary Tree Level Order Traversal,Binary Tree Level Order Traversal II

    Binary Tree Level Order Traversal Total Accepted: 79463 Total Submissions: 259292 Difficulty: Easy G ...

  10. 重写QSqlTableModel的flags函数实现tableview中某些列不可编辑,某些可以编辑

    Qt中使用QsqlTableModel和QTableView来显示数据库的查询结果是非常方便的,但是为了使QTableView中某些了列不可用,就需要重写 Qt::ItemFlags flags(co ...