UESTC_邱老师降临小行星 2015 UESTC Training for Search Algorithm & String<Problem B>
B - 邱老师降临小行星
Time Limit: 10000/5000MS (Java/Others) Memory Limit: 65536/65535KB (Java/Others)
人赢邱老师和任何男生比,都是不虚的。有一天,邱老师带妹子(们)来到了一个N行M列平面的小行星。对于每一个着陆地点,邱老师总喜欢带着妹子这样走:假设着陆地点为(r0, c0),那么他们下一步只能选择相邻格点,向四周走,即(r0–1, c0), (r0 + 1, c0), (r0, c0–1)或(r0, c0 + 1)。之后的路程必须严格按照右转-前进-左转-前进-右转......的道路前行。但是由于邱老师很心疼妹子,所以崎岖的山脉不可以到达。当不能前进时必须要原路返回。如下图。
问,邱老师在哪里着陆可以游历这颗星球最多的土地,输出可能访问到的最多的格点数。
Input
第一行一个整数T, 0<T≤20,表示输入数据的组数。
对于每组数据,第一行有两个整数N和M,分别表示行数和列数,0<N,M≤1000
下面N行,每行M个字符(0或1)。
1代表可到达的地方,0代表山脉(不可到达的地方)。
Output
对于每一组数据,输出一个整数后换行,表示选择某点着陆后,可能访问到的最多的格点数。
Sample input and output
Sample Input | Sample Output |
---|---|
|
|
解题报告:
这是一道记忆化搜索题目,每个格子对应4种形态,每种形态又有2种形态,故共有8种状态.
f(i,j,k,m) -> 在格子(i,j) 时对应形态 k 的第 m 种状态最远可以走X步
- #include <iostream>
- #include <cstring>
- #include <cstdio>
- #include <algorithm>
- using namespace std;
- const int maxn = 1e3 + ;
- int maxarrive[maxn][maxn][][],r,c;
- bool pass[maxn][maxn];
- bool inmap(int x,int y)
- {
- if (x > r || x <= || y > c || y <= || !pass[x][y])
- return false;
- return true;
- }
- /*
- 你拉着提琴,优雅美丽,眼神却逃避
- */
- int dfs(int x,int y,int turn,int st)
- {
- if (maxarrive[x][y][turn][st] != -)
- return maxarrive[x][y][turn][st];
- int &ans = maxarrive[x][y][turn][st];
- if (!inmap(x,y))
- return ans = ;
- if (turn == )
- {
- if (st == )
- ans = dfs(x,y+,,) + ;
- else
- ans = dfs(x-,y,,) + ;
- }
- else if (turn == )
- {
- if (st == )
- ans = dfs(x+,y,,) + ;
- else
- ans = dfs(x,y+,,) + ;
- }
- else if (turn == )
- {
- if (st == )
- ans = dfs(x,y-,,) + ;
- else
- ans = dfs(x+,y,,) + ;
- }
- else if (turn == )
- {
- if (st == )
- ans = + dfs(x-,y,,);
- else
- ans = + dfs(x,y-,,);
- }
- return ans;
- }
- int main(int argc,char *argv[])
- {
- int Case;
- scanf("%d",&Case);
- while(Case--)
- {
- memset(pass,true,sizeof(pass));
- memset(maxarrive,-,sizeof(maxarrive));
- scanf("%d%d",&r,&c);
- char buffer[];
- for(int i = ; i <= r ; ++ i)
- {
- scanf("%s",buffer);
- for(int j = ; j < c ; ++ j)
- if (buffer[j] == '')
- pass[i][j+] = false;
- }
- int ans = ;
- for(int i = ; i <= r ; ++ i)
- for(int j = ; j <= c ; ++ j)
- {
- if (pass[i][j])
- {
- int newans = ;
- newans += dfs(i-,j,,); // up
- newans += dfs(i+,j,,); // down
- newans += dfs(i,j-,,); // left
- newans += dfs(i,j+,,); // right
- ans = max(ans,newans);
- }
- }
- printf("%d\n",ans);
- }
- return ;
- }
UESTC_邱老师降临小行星 2015 UESTC Training for Search Algorithm & String<Problem B>的更多相关文章
- UESTC_韩爷的梦 2015 UESTC Training for Search Algorithm & String<Problem N>
N - 韩爷的梦 Time Limit: 200/100MS (Java/Others) Memory Limit: 1300/1300KB (Java/Others) Submit Stat ...
- UESTC_基爷的中位数 2015 UESTC Training for Search Algorithm & String<Problem D>
D - 基爷的中位数 Time Limit: 5000/3000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submi ...
- UESTC_秋实大哥の恋爱物语 2015 UESTC Training for Search Algorithm & String<Problem K>
K - 秋实大哥の恋爱物语 Time Limit: 5000/2000MS (Java/Others) Memory Limit: 32000/32000KB (Java/Others) Su ...
- UESTC_全都是秋实大哥 2015 UESTC Training for Search Algorithm & String<Problem J>
J - 全都是秋实大哥 Time Limit: 5000/2000MS (Java/Others) Memory Limit: 32000/32000KB (Java/Others) Subm ...
- UESTC_吴队长征婚 2015 UESTC Training for Search Algorithm & String<Problem E>
E - 吴队长征婚 Time Limit: 10000/4000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submi ...
- UESTC_基爷与加法等式 2015 UESTC Training for Search Algorithm & String<Problem C>
C - 基爷与加法等式 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Subm ...
- UESTC_王之迷宫 2015 UESTC Training for Search Algorithm & String<Problem A>
A - 王之迷宫 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit ...
- UESTC_Palindromic String 2015 UESTC Training for Search Algorithm & String<Problem M>
M - Palindromic String Time Limit: 3000/1000MS (Java/Others) Memory Limit: 128000/128000KB (Java ...
- UESTC_Ferris Wheel String 2015 UESTC Training for Search Algorithm & String<Problem L>
L - Ferris Wheel String Time Limit: 3000/1000MS (Java/Others) Memory Limit: 43000/43000KB (Java/ ...
随机推荐
- 删除list中指定值的元素
public class ListRemoveAll { public static void main(String[] args) { // TODO Auto-generated method ...
- handsontable插件HOOK事件
Hook插件 afterChange (changes: Array, source: String):1个或多个单元格的值被改变后调用 changes:是一个2维数组包含row,prop,o ...
- Block 代替for循环
NSDictionary *aDictionary = [[NSDictionary alloc]initWithObjectsAndKeys:", nil]; [aDictionary e ...
- struts——文件上传
上传文件在一个系统当中是一个很常用的功能,也是一个比较重要的功能.今天我们就一起来学习一下Struts2如何上传文件. 今天讲的上传文件的方式有三种: 1,以字节为单位传输文件: 2,Struts2封 ...
- 分享一个3D球面标签云
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- iOS:UI系列之UINavigationController
又到了总结的时间了,突然间感觉时间过得好快啊, 总觉的时间不够用,但是这也没办法啊, 只有自己挤时间了,虽然是零基础,但是这并不能代表什么啦,只要努力,收获总还是有的, 同时我也相信广大的博友肯定也有 ...
- 22. 使用 awk / grep / head / tail 命令进行文本 / 日志分析 (/home/D/acc.log)
一.awk # 统计 a-read-file 接口 中,接口耗时 超过 0.007 秒的有多少个请求 D@Demon ~]$ awk '$7>0.007' acc.log | w ...
- js简单排序
简单的排序功能 HTML代码: <body> <input id="btn1" type="button" value="排序&qu ...
- (转)swfobject.js 详细解说
一直想对这个应用做个总结,今天偶然百度到这个效果,为此做个笔记. 用这个js的好处: 1.IE中没有讨厌的虚框问题了.2.提供了完善的版本检测功能,如果版本不够则显示其他东西,比如图片或文字.3.易于 ...
- django表单及母板
在之前的埔文中说到了对Model的操作以及对url的路由映射等内容,对应django的mtv框架则是完成了学习,Model与viewer的操作,那么本节主要来唠叨一下template,当Model,v ...