2015 UESTC 搜索专题B题 邱老师降临小行星 记忆化搜索
邱老师降临小行星
Time Limit: 20 Sec Memory Limit: 256 MB
题目连接
http://acm.uestc.edu.cn/#/contest/show/61
Description
人赢邱老师和任何男生比,都是不虚的。有一天,邱老师带妹子(们)来到了一个N行M列平面的小行星。对于每一个着陆地点,邱老师总喜欢带着妹子这样走:假设着陆地点为(r0, c0),那么他们下一步只能选择相邻格点,向四周走,即(r0–1, c0), (r0 + 1, c0), (r0, c0–1)或(r0, c0 + 1)。之后的路程必须严格按照右转-前进-左转-前进-右转......的道路前行。但是由于邱老师很心疼妹子,所以崎岖的山脉不可以到达。当不能前进时必须要原路返回。如下图。
问,邱老师在哪里着陆可以游历这颗星球最多的土地,输出可能访问到的最多的格点数。
Input
Output
对于每一组数据,输出一个整数后换行,表示选择某点着陆后,可能访问到的最多的格点数。
Sample Input
4 3
111
111
111
111
3 3
111
101
111
Sample Output
4
HINT
题意
题解:
记忆化搜索,存一下值就好了
代码:
//qscqesze
#include <cstdio>
#include <cmath>
#include <cstring>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <sstream>
#include <queue>
#include <typeinfo>
#include <fstream>
#include <map>
#include <stack>
typedef long long ll;
using namespace std;
//freopen("D.in","r",stdin);
//freopen("D.out","w",stdout);
#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
#define maxn 200001
#define mod 10007
#define eps 1e-9
int Num;
char CH[];
//const int inf=0x7fffffff; //нчоч╢С
const int inf=0x3f3f3f3f;
/* inline void P(int x)
{
Num=0;if(!x){putchar('0');puts("");return;}
while(x>0)CH[++Num]=x%10,x/=10;
while(Num)putchar(CH[Num--]+48);
puts("");
}
*/
//**************************************************************************************
inline ll read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
inline void P(int x)
{
Num=;if(!x){putchar('');puts("");return;}
while(x>)CH[++Num]=x%,x/=;
while(Num)putchar(CH[Num--]+);
puts("");
} char s[][];
int dp[][][];
int dx[]={-,,,,,,,-};
int dy[]={,,,,,-,-,};
int n,m;
void dfs(int i,int j,int k)
{
if(k%==)
{
if(i+dx[k]<||i+dx[k]>=n||j+dy[k]<||j+dy[k]>=m)
dp[i][j][k]=;
else if(s[i+dx[k]][j+dy[k]]=='')
dp[i][j][k]=;
else
{
if(dp[i+dx[k]][j+dy[k]][k+]==-)
dfs(i+dx[k],j+dy[k],k+);
dp[i][j][k]=;
dp[i][j][k]+=dp[i+dx[k]][j+dy[k]][k+];
}
}
else
{
if(i+dx[k]<||i+dx[k]>=n||j+dy[k]<||j+dy[k]>=m)
dp[i][j][k]=;
else if(s[i+dx[k]][j+dy[k]]=='')
dp[i][j][k]=;
else
{
if(dp[i+dx[k]][j+dy[k]][k-]==-)
dfs(i+dx[k],j+dy[k],k-);
dp[i][j][k]=;
dp[i][j][k]+=dp[i+dx[k]][j+dy[k]][k-];
}
}
}
int main()
{
int t=read();
for(int cas=;cas<=t;cas++)
{
n=read(),m=read();
for(int i=;i<n;i++)
for(int j=;j<m;j++)
for(int k=;k<;k++)
dp[i][j][k]=-;
for(int i=;i<n;i++)
scanf("%s",s[i]);
int ans2=;
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
{
if(s[i][j]=='')
continue;
int ans=;
if(dp[i][j][]==-)
dfs(i,j,);
ans+=dp[i][j][];
if(dp[i][j][]==-)
dfs(i,j,);
ans+=dp[i][j][];
if(dp[i][j][]==-)
dfs(i,j,);
ans+=dp[i][j][];
if(dp[i][j][]==-)
dfs(i,j,);
ans+=dp[i][j][];
ans2=max(ans2,ans);
}
}
printf("%d\n",ans2);
}
}
2015 UESTC 搜索专题B题 邱老师降临小行星 记忆化搜索的更多相关文章
- UESTC_邱老师降临小行星 2015 UESTC Training for Search Algorithm & String<Problem B>
B - 邱老师降临小行星 Time Limit: 10000/5000MS (Java/Others) Memory Limit: 65536/65535KB (Java/Others) Su ...
- 2015 UESTC 数据结构专题N题 秋实大哥搞算数 表达式求值/栈
秋实大哥搞算数 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1074 Des ...
- 2015 UESTC 数据结构专题B题 秋实大哥与花 线段树 区间加,区间查询和
B - 秋实大哥与花 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 De ...
- 2015 UESTC 数据结构专题H题 秋实大哥打游戏 带权并查集
秋实大哥打游戏 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 Descr ...
- 2015 UESTC 数据结构专题G题 秋实大哥去打工 单调栈
秋实大哥去打工 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 Descr ...
- 2015 UESTC 数据结构专题E题 秋实大哥与家 线段树扫描线求矩形面积交
E - 秋实大哥与家 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 De ...
- 2015 UESTC 数据结构专题D题 秋实大哥与战争 SET的妙用
D - 秋实大哥与战争 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 D ...
- 2015 UESTC 数据结构专题D题 秋实大哥与战争 变化版本的线段树,合并区间,单点查询
D - 秋实大哥与战争 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 D ...
- 2015 UESTC 数据结构专题C题 秋实大哥与快餐店 字典树
C - 秋实大哥与快餐店 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 ...
随机推荐
- c#操作pdf文件系列之创建文件
1.我使用的工具是vs2013,引用的第三方程序集itextpdf 具体安装方法,可以通过nuget搜索iTextSharp然后进行安装. 2具体代码如下 创建两个不同pdf文件,每个地方什么意思代码 ...
- 【会装】kylin的安装(填坑)和简单使用
1.简介 kylin的设计思想是空间换时间,将hive上的大表的维度全部排列组合计算也将度量提前计算然后存入HBase库,这个步骤在kylin中称之为build cube. 在查询的时候已经建立cu ...
- Fiddler Web Session 列表(1)
Web Session 列表 位置: Web Session 列表 位于Fiddler界面的左侧 ,是Fiddler所抓取到的所有Session会话的列表集合. Web Session 列表 栏名词解 ...
- python中的any和all函数
any和all函数是判断一组数据真假性的综合结果.以下摘选自Stackoverflow. ------------------ 分割线开始 ----------------- any any will ...
- pandas 数据结构的基本功能
操作Series和DataFrame中的数据的常用方法: 导入python库: import numpy as np import pandas as pd 测试的数据结构: Series: > ...
- Eclipse如何定位到某一个类所在硬盘上的位置
解决方法:安装OpenExplorer_1.5.0.v201108051513.jar插件 将OpenExplorer_1.5.0.v201108051513.jar文件添加到Eclipse所在目录下 ...
- Linux中find用法
Linux中find用法 linux常用命令 find -name april* 在当前目录下查找以april开始的文件 find -name april* fprint file 在当前目录下查找以 ...
- gVim 启动时窗口自动居中
最近折腾 vim, 除了配置巨麻烦外, 另一个很蛋疼的就是窗口位置问题了, 折腾了半天无法启动时自动居中, 找遍各地也只有保存上次位置, 下次启动时恢复的方法 废话不多说, 直接上代码, 丢到 vim ...
- 2017-2018-1 20179202《Linux内核原理与分析》第二周作业
本周着重学习了汇编指令,并通过反汇编C程序了解栈帧变化. 实践 看了孟老师的演示视频后,我重新写了C程序,如下: int main() { int a=1,b=2; return g(a,b); } ...
- XML和HTML的区别
1.很多新手程序员总是会问HTML和XML有什么区别,接下来就解释一下: 什么是XML? XML 指可扩展标记语言(EXtensible Markup Language). XML 是一种很像HTML ...