uva 10502

题意:给定01矩阵,求有多少个由1构成的矩阵。1本事也算一个矩阵。

  到最后还是想不出来。。。。。

  每次枚举两行,从第i行到第j行,k枚举矩阵的宽(column)。这样就相当于每次看看每列i到j行之间是否全是1,是就累加tot,不是就tot置零。比如现在i=1,j=3,前k=3列为:

     i=1   1 1 1

           1 1 1

     j=3   1 1 1

这时相当于竖着的长条都是1,所以k=1时,sum[1]=3,(因为当j=2、1时,sum的值已经计算过了,到这里由于值为1再加一下就是3了,也可以看成类似求竖着的largest empty interval),tot++,ans+=tot;k=2时,sum[2]=3,tot++,ans+=tot...

这样算出来此时状态下ans=1+2+3=6.(把话说明白好难)

参考代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int MAXN = ;
int maps[MAXN][MAXN];
int sum[MAXN];
char s[MAXN];
int row, col; int main()
{
while (scanf("%d", &row) == , row)
{
scanf("%d", &col);
memset(sum, , sizeof(sum));
for (int i = ; i <= row; i++)
{
scanf("%s", s);
for (int j = ; j<col; j++) {
maps[i][j + ] = s[j] - '';
}
}
int ans = ;
for (int i = ; i <= row; i++)//从第i行开始
{
memset(sum, , sizeof(sum));//每次换i行时清空sum,因为第i行是基础,j行随它变动
for (int j = i; j <= row; j++)//到第j行
{
int tot = ;
for (int k = ; k <= col; k++)//依次枚举
{
sum[k] += maps[j][k];
if (sum[k] != j - i + ) tot = ;//如果连续长度不满足tot清零
else tot++;//否则累加
ans += tot;//记录结果
}
}
}
cout << ans << endl;
}
return ;
}

当然,也可以行列互换,看成第i列到第j列的长条。

 #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int MAXN = ;
int maps[MAXN][MAXN];
int sum[MAXN];
char s[MAXN];
int row, col; int main()
{
while (scanf("%d", &row) == , row)
{
scanf("%d", &col);
memset(sum, , sizeof(sum));
for (int i = ; i <= row; i++)
{
scanf("%s", s);
for (int j = ; j<col; j++) {
maps[i][j + ] = s[j] - '';
}
}
int ans = ;
for (int i = ; i <= col; i++)
{
memset(sum, , sizeof(sum));
for (int j = i; j <= col; j++)
{
int tot = ;
for (int k = ; k <= row; k++)
{
sum[k] += maps[k][j];
if (sum[k] != j - i + ) tot = ;
else tot++;
ans += tot;
}
}
}
cout << ans << endl;
}
return ;
}

i、j看成列

而且有一个非常有意思的性质,当矩阵是n*n且全是1时,答案就是前n个数的立方和。

UVa 10502【dp】的更多相关文章

  1. UVA 3882【dp】【简单数学】

    题意: 给定三个数分别是: 人数    间隔     起点 题目中人的编号从1开始.在进行约瑟夫环的判定之后,求解最后能够活下来的人. 思路: 约瑟夫环的递推公式是 f[n]=(f[n-1]+jian ...

  2. Kattis - honey【DP】

    Kattis - honey[DP] 题意 有一只蜜蜂,在它的蜂房当中,蜂房是正六边形的,然后它要出去,但是它只能走N步,第N步的时候要回到起点,给出N, 求方案总数 思路 用DP 因为N == 14 ...

  3. HDOJ 1423 Greatest Common Increasing Subsequence 【DP】【最长公共上升子序列】

    HDOJ 1423 Greatest Common Increasing Subsequence [DP][最长公共上升子序列] Time Limit: 2000/1000 MS (Java/Othe ...

  4. HDOJ 1501 Zipper 【DP】【DFS+剪枝】

    HDOJ 1501 Zipper [DP][DFS+剪枝] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...

  5. HDOJ 1257 最少拦截系统 【DP】

    HDOJ 1257 最少拦截系统 [DP] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...

  6. HDOJ 1159 Common Subsequence【DP】

    HDOJ 1159 Common Subsequence[DP] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...

  7. HDOJ_1087_Super Jumping! Jumping! Jumping! 【DP】

    HDOJ_1087_Super Jumping! Jumping! Jumping! [DP] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...

  8. POJ_2533 Longest Ordered Subsequence【DP】【最长上升子序列】

    POJ_2533 Longest Ordered Subsequence[DP][最长递增子序列] Longest Ordered Subsequence Time Limit: 2000MS Mem ...

  9. HackerRank - common-child【DP】

    HackerRank - common-child[DP] 题意 给出两串长度相等的字符串,找出他们的最长公共子序列e 思路 字符串版的LCS AC代码 #include <iostream&g ...

随机推荐

  1. openldap 2.4 centos7 常用配置

    新版的openldap弃用了sldap.conf配置文件,引入一种动态配置,所以尽量不要直接修改配文件 如果直接修改了配置文件可以用slaptest -u命令检查 1.安装openldap,可能需要e ...

  2. vim Tab的设置问题

    VIM 中处理 TAB 异常的方便. 键盘上的 TAB 键,与文件中的 TAB 符号一定要区分开,这是两个概念. 显示当前文件中的 Tab /\t 实际上,就是查询 \t 符号. shiftwidth ...

  3. Spring Bean 作用域

    Bean 的作用域 当在 Spring 中定义一个 bean 时,你必须声明该 bean 的作用域的选项.例如,为了强制 Spring 在每次需要时都产生一个新的 bean 实例,你应该声明 bean ...

  4. iframe调用父页面各种方法

    HTML: <body>    <form id="form1" runat="server">       <div> & ...

  5. 机房收费系统vb.net之打包与部署(二)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/wangdan199112/article/details/28286365             ...

  6. SAE J2534介绍

    概要 J2534是一种针对与射频相关的ECU进行闪存编程的概念,而不用考虑ECU使用的通信协议.其目的是所有类型的ECU都应当只需一个工具(硬件设备),通常被称为通过式设备.J2534设备和ECU之间 ...

  7. Wndows下Apache+php+Mysql环境的搭建及其涉及的知识

    一.安装Apache 1. 在网上搜索以下3个文件,以及找一个地方新建一个文件夹 好吧,这里有下载链接:http://pan.baidu.com/s/1hr9IdSS 文件夹内有:apache,mys ...

  8. ecshop二次开发之后台秒杀

    1.进入admin->includes->inc_menu.PHP中此文件为定义左侧功能模块超链接 2.添加include/inc_menu.php秒杀管理超链接找链接 $modules[ ...

  9. 【JZOJ5081】【GDSOI2017第三轮模拟】Travel Plan 背包问题+双指针+树的dfs序

    题面 100 注意到ban的只会是一个子树,所以我们把原树转化为dfs序列. 然后题目就转化为,询问一段ban的区间,之后的背包问题. 比赛的时候,我想到这里,于是就开始想区间合并,于是搞了线段树合并 ...

  10. 2013B题碎纸片拼接

    Photo1_1: clear;clc; path='E:\B\附件1\'; files=dir('E:\B\附件1\*.bmp'); % objdir='E:\B\附件1\'; % bgfile=[ ...