01 Matrix 杭电2015年12月校赛F (二维DP)
来源:互联网 发布:mac常用软件2017 编辑:程序博客网 时间:2024/06/13 21:53
思路:首先计算出,每个点的DP值,而位置上的DP肯定与当前点的左上,上,左三个位置的DP值有关,且必须取三者中值最小的。然后再如何确定每个k*k的矩阵有多少个呢?我们在计算每个DP[][]值的时候可以将其值共有多少记录下来。并且注意到在如果为4*4的矩阵里边必定有一个3*3的矩阵。并且在4*4的矩阵中的这个3*3的矩阵没有被累加过,因为是以当前组成4*4的矩阵右下角开始扩展到。
#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cstdlib>#include<string>#include<queue>#include<map>#define L1 long long#define L2 __int64#define inf 0x3f3f3f3fusing namespace std;const int m1=1001000;const int m2=1010;int head[m1],vex[m1],arr[m1];bool vis[m2][m2];char s[1100][1100];int dp[1100][1100],dp1[1100];int main(){ int n,m,i,j,k; int cla; scanf("%d",&cla); while(cla--) { scanf("%d%d",&n,&m); memset(dp,0,sizeof(dp)); memset(dp1,0,sizeof(dp1)); getchar(); for(i=1;i<=n;i++) { scanf("%s",s[i]+1); } for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(s[i][j]=='0') dp[i][j]=0; else { k=min(dp[i][j-1],dp[i-1][j]); k=1+min(k,dp[i-1][j-1]); dp[i][j]=k; dp1[k]++; } } } for(i=n;i>=1;i--) dp1[i-1]+=dp1[i]; while(m--) { scanf("%d",&k); printf("%d\n",dp1[k]); } } return 0;}
1 0
- 01 Matrix 杭电2015年12月校赛F (二维DP)
- 【杭电2015年12月校赛F】【二维DP】01 Matrix 大正方形内size为k的全1子正方形的个数
- 2015‘12杭电校赛1006 01 Matrix(二维DP)
- 杭电 4734F(x)(数位dp)
- (二维) Matrix (P2155)
- 杭电5671 Matrix
- 【杭电oj5671】Matrix
- 杭电ACM2159(二维背包)
- 杭电1257(DP)
- 杭电2571(DP)。
- AYITACM2016省赛第三周F - Cutting Sticks(切木头,区间电dp合并)
- 杭电2802F(N)
- UVA - 11019 Matrix Matcher (AC自动机(二维匹配) + dp)
- Codeforces-903F Clear The Matrix(状压DP)
- 计算机学院大学生程序设计竞赛(2015’12) 1006 01 Matrix(dp)
- 【HDU 杭电 5671 Matrix】
- HDU5569 matrix(dp)
- matrix (dp)
- 使用keytool生成证书和秘钥
- /bin/sh^M:损坏的解释器: 没有那个文件或目录
- 163,如何实现懒加载——getter方法
- 文章标题
- [从头学数学] 第22节 表内乘法(一)
- 01 Matrix 杭电2015年12月校赛F (二维DP)
- Scala光速入门之Scala的基本语法、Array、Map、Tuple等
- Android Imageview中获取缓存图片添加水印
- BZOJ 3207 花神的嘲讽计划Ⅰ 可持久化线段树
- 树中点对距离
- SQLite数据库存储
- (java多线程并发)控制并发线程数的Semaphore
- android 图片操作之色彩变换
- [Android]贝塞尔曲线应用及QQ气泡拖动原理实践