hdu ---(4517)小小明系列故事——游戏的烦恼(Dp)
小小明系列故事——游戏的烦恼
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 841 Accepted Submission(s): 296
小小明最近在玩一款游戏,它由n*m大小的矩阵构成,矩阵上会随机产生一些黑色的点,这些点它们可能会连在一起也可能会分开,这些点的个数没有限制,但
是每个1*1方格中最多只可能有一个黑点产生。游戏要求玩家以最短的时间用x*y的小矩阵覆盖这个大矩阵,覆盖的要求有以下2点:
1. x*y大小的小矩阵内必须有x*y个黑点。
2. 多个小矩阵可以重叠,但是每个小矩阵放置的位置必须是独一无二的,即不同的小矩阵内的黑点不能完全相同。例如1*2的矩阵可以横着放,也可以竖着放,这两种方法是不同的,即使它们可能共用黑点。
小小明是个粗心的孩子,他尝试了很多遍都无法将所有的符合要求的小矩阵找到,聪明的你,能不能告诉烦恼中的小小明这个大矩阵里有多少个满足要求的小矩阵呢?
每组测试数据的第一行包含2个正整数n和m,然后第二行是x和y(n,m,x,y的意思如题),接下来n行,每行m个字符,其中’ * ’表示黑点,’ . ’表示空白。
n和m为0则结束输入。
[Technical Specification]
0 < n, m <= 2000
0 < x, y <= 1000
1 2
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
const int maxn=;
char map[maxn][maxn];
int n,m;
bool match(int posx,int posy,int x,int y)
{
int i,j;
if(posx+x>n||posx<||posy+y>m||posy<)
return ;
for( i=posx; i<posx+x ; i++ ){
for( j=posy ; j<posy+y ; j++ ) {
if(map[i][j]!='*')return false;
}
}
return true;
} int work(int x,int y)
{
int i,j,cnt=;
for(i=;i<n;i++){
for(j=;j<m;j++){
if(match(i,j,x,y)) cnt++;
if(match(i,j,y,x)) cnt++;
}
}
return cnt;
}
int main()
{
int x,y,i;
while(scanf("%d%d",&n,&m)!=EOF,n+m!=)
{
scanf("%d%d",&x,&y);
for(i=;i<n;i++)
scanf("%s",map[i]);
printf("%d\n",work(x,y));
}
return ;
}
然后统计了一下,dp...简单的dp
代码: 不过依旧还是很挫,写到了680ms....
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
const int maxn=;
char map[maxn][maxn];
int dp[maxn][maxn];
int n,m;
void init()
{
int i,j,cnt=;
memset(dp,,sizeof(dp));
for(i=;i<=n;i++) {
for(j=;j<=m;j++) {
if(map[i][j-]=='*')cnt++;
dp[i][j]=cnt+dp[i-][j];
}
cnt=;
}
}
int work(int x,int y){
int i,j,cnt=;
for(i=;i+x<=n;i++){
for(j=;j+y<=m;j++){
int tem=dp[i+x][j+y]-dp[i-][j+y]-dp[i+x][j-]+dp[i-][j-];
if(tem==((x+)*(y+)))cnt++;
}
}
return cnt;
}
int main()
{
int x,y,i;
while(scanf("%d%d",&n,&m),n+m!=)
{
scanf("%d%d",&x,&y);
x--,y--;
for(i=;i<=n;i++)
scanf("%s",map[i]);
init();
if(x==y) printf("%d\n",work(x,y));
else printf("%d\n",work(x,y)+work(y,x)); }
return ;
}
hdu ---(4517)小小明系列故事——游戏的烦恼(Dp)的更多相关文章
- 小小明系列故事——游戏的烦恼(hdu 4517)
小小明系列故事--游戏的烦恼 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)To ...
- HDOJ(HDU).4508 湫湫系列故事――减肥记I (DP 完全背包)
HDOJ(HDU).4508 湫湫系列故事――减肥记I (DP 完全背包) 题意分析 裸完全背包 代码总览 #include <iostream> #include <cstdio& ...
- hdu 4506 小明系列故事——师兄帮帮忙【幂取模乱搞】
链接: http://acm.hdu.edu.cn/showproblem.php?pid=4506 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- hdu 4542 小明系列故事——未知剩余系
小明系列故事——未知剩余系 题意:操作0表示某数有n个约数,操作1为某数有n个非约数:n <= 47777,若是存在小于2^62的数符合,则输出该数,否则若是不存在输出Illegal,若是大于2 ...
- HDU 4511 小明系列故事——女友的考验 (AC自动机+DP)
小明系列故事——女友的考验 Time Limit: 500/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...
- HDU 4511 小明系列故事——女友的考验 (AC自动机 + DP)
小明系列故事——女友的考验 Time Limit: 500/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...
- hdu 4542 小明系列故事——未知剩余系 反素数 + 打表
小明系列故事——未知剩余系 Time Limit: 500/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Prob ...
- HDU 4828 小明系列故事——捉迷藏
漂亮妹子点击就送:http://acm.hdu.edu.cn/showproblem.php?pid=4528 Time Limit: 500/200 MS (Java/Others) Memo ...
- HDU - 4511 小明系列故事――女友的考验(AC自己主动机+DP)
Description 最终放寒假了,小明要和女朋友一起去看电影.这天,女朋友想给小明一个考验,在小明正准备出发的时候.女朋友告诉他.她在电影院等他,小明过来的路线必须满足给定的规则: 1.如果小明 ...
随机推荐
- css做的后台管理页面,不考虑ie8一下的
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- Changing Icon File Of Push Button At Runtime In Oracle Forms 6i
Set Icon_File property in When-Mouse-Enter trigger Suppose you are creating icon based menu system i ...
- cert
- [C程序设计语言]第三部分
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- CUBRID学习笔记 37 ADO.NET Schema Provider
通常需要添加以下引用: 1 2 3 using System.Data; using System.Data.Common; using CUBRID.Data.CUBRIDClient; 定义连 ...
- ServiceStack.OrmLite 笔记2 -增
ServiceStack.OrmLite 笔记2 这篇主要介绍 增加 db.Insert(new Employee { Id = 1, Name = "Employee 1" }) ...
- linux 查看是否安装perl模块
这里介绍两种linux中查看perl模块是否安装的方法,一种是对于单体的模块,一种是对于群体的. 单体验证: [root@root ~]# perl -MShell -e "print\&q ...
- iOS - Swift 数据持久化
1.Sandbox 沙箱 iOS 为每个应用提供了独立的文件空间,一个应用只能直接访问为本应用分配的文件目录,不可以访问其他目录,每个应用自己独立的访问空间被称为该应用的沙盒.也就是说,一个应用与文件 ...
- Oracle PLSQL语句实例
/** * plsql:某个项目对效率要求比较高的时候用,一般不用,大多数项目写的是夸数据库平台的,用不上. * pssql大多数能做的东西,java都能替代它.在某些特殊的地方要求用plsql的时候 ...
- 通过注解(annotation)配置Bean
Spring能够在classpath下自动扫描,侦测和实例化具有特定注解的组件,这在Spring中成为组件扫描(Component scanning). 特定组件的注解包括: @Component:基 ...