hdu4331 Image Recognition 就暴力啊。。啊。。
题意:
给一个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 就暴力啊。。啊。。的更多相关文章
- face recognition[Euclidean-distance-based loss][FaceNet]
本文来自<FaceNet: A Unified Embedding for Face Recognition and Clustering>.时间线为2015年6月.是谷歌的作品. 0 引 ...
- Programming Assignment 3: Pattern Recognition
编程作业三 作业链接:Pattern Recognition & Checklist 我的代码:BruteCollinearPoints.java & FastCollinearPoi ...
- 无需看到你的脸就能认出你——实现Beyond Frontal Faces: Improving Person Recognition Using Multiple Cues
今年年初Facebook AI Research发布了一篇名为Beyond Frontal Faces: Improving Person Recognition Using Multiple Cue ...
- Algorithms : Programming Assignment 3: Pattern Recognition
Programming Assignment 3: Pattern Recognition 1.题目重述 原题目:Programming Assignment 3: Pattern Recogniti ...
- zone.js - 暴力之美
在ng2的开发过程中,Angular团队为我们带来了一个新的库 – zone.js.zone.js的设计灵感来源于Dart语言,它描述JavaScript执行过程的上下文,可以在异步任务之间进行持久性 ...
- [bzoj3123][sdoi2013森林] (树上主席树+lca+并查集启发式合并+暴力重构森林)
Description Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数 ...
- HDU 5944 Fxx and string(暴力/枚举)
传送门 Fxx and string Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Othe ...
- 1250 Super Fast Fourier Transform(湘潭邀请赛 暴力 思维)
湘潭邀请赛的一题,名字叫"超级FFT"最终暴力就行,还是思维不够灵活,要吸取教训. 由于每组数据总量只有1e5这个级别,和不超过1e6,故先预处理再暴力即可. #include&l ...
- fragment+viepager 的简单暴力的切换方式
这里是自定义了一个方法来获取viewpager private static ViewPager viewPager; public static ViewPager getMyViewPager() ...
随机推荐
- JSON数据解析——jsoncpp的使用
版权所有,转载请注明:http://blog.sina.com.cn/u/1978765352 由于工作中需要用到JSON数据,所以解析JSON数据就成了一个非常重要的工作内容. 其实用C++解析数据 ...
- iframe父子页面互调方法和属性
1.iframe子页面调用 父页面js函数 子页面调用父页面函数只需要写上window.praent就可以了.比如调用a()函数,就写成: window.parent.a(); 子页面取父页面中的标签 ...
- linux内存操作----kernel 3.5.X copy_from_user()和copy_to_user()
前面的一篇文章中简单的描写叙述了一下内存映射的内容,http://blog.csdn.net/codectq/article/details/25658813,这篇文章作为用户把内存规划好之后,在用户 ...
- 更新-----Scripts:执行双网卡绑定
#!/bin/bash #------------------------------------------------------------------------------- # Name: ...
- 【设计模式:单例模式】使用单例模式载入properties文件
先准备測试程序: package org.jediael.util; import static org.junit.Assert.*; import org.junit.Test; public c ...
- mysql 5.5源码包安装
注:由于mysql5.5的源码包安装与mysql之前的版本安装方法不同,故写一篇随笔记录.5.5的版本不再是./configure make make install 这里用到了cmake了,cmak ...
- SVG 和字符图标
制作网站往往需要使用一些图标来提高用户体验,如果我们的是一些扁平化设计的图标,我们可以选择 SVG 或 图标字体来提高用户体验. 下面对这两种技术进行比较. 开发难度: 现在的在线工具非常强大,比如 ...
- PHP学习笔记七【函数】
<?php $a=13; function abc3($a) { unset($a);//[释放给定变量]表示不在abc3函数范围内,不在使用$a,后面需要全新定义 $a=45; } abc(3 ...
- Spring 入门 Ioc-Annotation
通过对XML版本进行修改:http://www.cnblogs.com/likailan/p/3446821.html 一.导入 Spring 所需要的包 spring-framework-2.5.6 ...
- pl sql练习(3)
1.s树形结构查询表中的数据:比如emp表中每个员工都有自己的头,即公司中的职位是按层次划分的,类似一个树,因此有时需要按层次显示查询的结果. select empno,mgr,ename,job f ...