题意:

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

方法:

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

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

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

然后枚举边长,就没了

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

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

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

  1. #include<iostream>
  2. #include<cmath>
  3. #include<cstdio>
  4. #include<vector>
  5. #include<cstring>
  6. #include<algorithm>
  7. using namespace std;
  8.  
  9. int t,T,ans,s[1005][1005],n;
  10. int d1[1005][1005],d2[1005][1005],dt[1005][1005],dd[1005][1005],dl[1005][1005],dr[1005][1005];
  11. //dt(top) dd(down) dl(left) dr(right)表示该点向四个方向最长有几个1
  12. //d1表示该点向右下对角线的最长边长(即该点向下和向右短的那条边) d2表示向左上
  13. int main()
  14. {
  15. int i,j,k;
  16. scanf("%d",&T);
  17. t=0;
  18. while(T--)
  19. {
  20. ans=0;
  21. t++;
  22. scanf("%d",&n);
  23. for(i=0;i<n;i++)
  24. for(j=0;j<n;j++)
  25. {
  26. scanf("%d",&s[i][j]);
  27. if(s[i][j]) ans++;
  28. }
  29. memset(dt,0,sizeof dt);
  30. memset(dd,0,sizeof dd);
  31. memset(dr,0,sizeof dr);
  32. memset(dl,0,sizeof dl);
  33. for(i=0;i<n;i++)//右下方向
  34. {
  35. for(j=0;j<n;j++)
  36. {
  37. if(s[i][j])
  38. {
  39. dd[i][j]=dd[i-1][j]+1;
  40. dr[i][j]=dr[i][j-1]+1;
  41. }
  42. d1[i][j]=min(dd[i][j],dr[i][j]);
  43. }
  44. }
  45. for(i=n-1;i>=0;i--)//左上方向
  46. {
  47. for(j=n-1;j>=0;j--)
  48. {
  49. if(s[i][j])
  50. {
  51. dt[i][j]=dt[i+1][j]+1;
  52. dl[i][j]=dl[i][j+1]+1;
  53. }
  54. d2[i][j]=min(dt[i][j],dl[i][j]);
  55. }
  56. }
  57. for(i=0;i<n;i++)
  58. {
  59. for(j=0;j<n;j++)
  60. {
  61. for(k=2;k<=d2[i][j];k++)//枚举边长
  62. {
  63. if(k<=d1[i+k-1][j+k-1])
  64. ans++;
  65. }
  66. }
  67. }
  68. printf("Case %d: %d\n",t,ans);
  69. }
  70. return 0;
  71. }

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. Unix/Linux环境C编程入门教程(35) 编程管理系统中的组

     组管理相关函数介绍 相关函数 getgid,setgid,setregid 表头文件 #include<unistd.h> #include<sys/types.h> 定 ...

  2. 【转】 linux内核移植和驱动添加(三)

    原文网址:http://blog.chinaunix.net/uid-29589379-id-4708909.html 原文地址:linux内核移植和驱动添加(三) 作者:genehang 四,LED ...

  3. Word Amalgamation

    Problem Description In millions of newspapers across the United States there is a word game called J ...

  4. Android 内部存储相关的函数(getCacheDir,getDir, getFileStreamPath,getFilesDir,openFileInput, ...)

    为了保证应用程序存储数据的安全性,开发人员在开发应用程序的过程中须要注意使用Android 应用程序的内部存储空间. 依据不同的要求.将相应的数据文件.缓存文件.暂时文件等分别存储在相应的位置. 注意 ...

  5. CSS基础要点概况

    1.CSS概述 1)css指层叠样式表 2)样式定义如何显示HTML元素 3)样式通常存储在样式表中 4)把样式添加到HTML4.0中,是为了解决内容与表现分离的问题 5)外部样式表可以极大提高工作效 ...

  6. python 使用 tweepy 案例: PS4

    First, make sure Python and Tweepy installed well, and the network setup well. Then, you go to http: ...

  7. PHP学习笔记十四【面向对象】

    <?php class Cat{ public $name; public $age; public $color; } //创建一个对象 $cat1=new Cat(); $cat1-> ...

  8. 通过递归方法对一个单词所有的组合进行列举(java)

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public ...

  9. HDU 5768 - Lucky7

    题意: 给出x, y, m[1...n], a[1..n].     在[x,y]中寻找 p % 7 = 0 且对任意(1<= i <=n) p % m[i] != a[i] 的数字的个数 ...

  10. HDU 1065 - I Think I Need a Houseboat

    又是恶心人的水题 圆周率取3.1415926就啥事没有.. #include <iostream> #include <cstdio> #include <cmath&g ...