博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 4517(递推枚举统计)
阅读量:5367 次
发布时间:2019-06-15

本文共 2224 字,大约阅读时间需要 7 分钟。

小小明系列故事——游戏的烦恼

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)

Total Submission(s): 1330    Accepted Submission(s): 426

Problem Description
   小小明最近在玩一款游戏,它由n*m大小的矩阵构成,矩阵上会随机产生一些黑色的点,这些点它们可能会连在一起也可能会分开,这些点的个数没有限制,但 是每个1*1方格中最多只可能有一个黑点产生。游戏要求玩家以最短的时间用x*y的小矩阵覆盖这个大矩阵,覆盖的要求有以下2点:
  1. x*y大小的小矩阵内必须有x*y个黑点。
  2. 多个小矩阵可以重叠,但是每个小矩阵放置的位置必须是独一无二的,即不同的小矩阵内的黑点不能完全相同。例如1*2的矩阵可以横着放,也可以竖着放,这两种方法是不同的,即使它们可能共用黑点。
  小小明是个粗心的孩子,他尝试了很多遍都无法将所有的符合要求的小矩阵找到,聪明的你,能不能告诉烦恼中的小小明这个大矩阵里有多少个满足要求的小矩阵呢?
 

 

Input
题目有多组测试数据(不多于100个);
每组测试数据的第一行包含2个正整数n和m,然后第二行是x和y(n,m,x,y的意思如题),接下来n行,每行m个字符,其中’ * ’表示黑点,’ . ’表示空白。
n和m为0则结束输入。
[Technical Specification]
0 < n, m <= 2000
0 < x, y <= 1000
 

 

Output
请计算并输出一共有多少个满足要求的小矩阵,每组输出占一行。
 

 

Sample Input
2 3 1 2 **. .** 0 0
 

 

Sample Output
3
 

 

Source
 
先预算出所有(0,0)-(i,j)(i<=n,j<=m)里面的黑点数量,然后再枚举所有的x*y的子矩阵,如果里面的黑点数为x*y,那么计数器+1,还有就是当x==y时要除以二,因为横竖算重复了。
///dp[i][j]代表在 (0,0)-(i,j) 的矩阵里面黑点的个数#include
#include
#include
using namespace std;const int N = 2005;char str[N];int dp[N][N];int main(){ int n,m,x,y; while(scanf("%d%d",&n,&m)!=EOF,n+m){ scanf("%d%d",&x,&y); memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++){ scanf("%s",str+1); int t = 0; for(int j=1;j<=m;j++){ if(str[j]=='*') t++; dp[i][j] = dp[i-1][j]+t; } } /*for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ printf("%d ",dp[i][j]); } printf("\n"); }*/ int ans ,cnt=0; for(int i=0;i<=n;i++){ ///枚举所有的x*y矩阵 for(int j=0;j<=m;j++){ if(i+x<=n&&j+y<=m){ ans = dp[i+x][j+y]-dp[i][j+y]-dp[i+x][j]+dp[i][j]; if(ans==x*y){ cnt++; } } if(i+y<=n&&j+x<=m){ ans = dp[i+y][j+x]-dp[i][j+x]-dp[i+y][j]+dp[i][j]; if(ans==x*y){ cnt++; } } } } if(x==y) cnt/=2; printf("%d\n",cnt); } return 0;}

 

转载于:https://www.cnblogs.com/liyinggang/p/5617495.html

你可能感兴趣的文章
星期五的收获
查看>>
proxmox 去除订阅提示
查看>>
使用Html.EditorFor()为文本框加上maxlength,placeholder等属性
查看>>
[转]后缀数组求最长重复子串
查看>>
设计模式——外观模式详解
查看>>
MVC3 控件
查看>>
mysql (一)
查看>>
photoshop图层样式初识1
查看>>
【.NET】使用HtmlAgilityPack抓取网页数据
查看>>
typedef的使用
查看>>
基于位置的本地商铺个性化推荐
查看>>
职场上一个人情商高的十种表现
查看>>
【底层原理】深入理解Cache (下)
查看>>
Elasticsearch安装中文分词插件IK
查看>>
进阶4:常见函数-单行函数
查看>>
简述企业信息化与企业架构关系
查看>>
npoi List 泛型导出
查看>>
流程图怎么画?分享绘制流程图简单方法
查看>>
squid的处理request和reply的流程
查看>>
硬件_陀螺仪
查看>>