B - 邱老师降临小行星

Time Limit: 10000/5000MS (Java/Others)     Memory Limit: 65536/65535KB (Java/Others)
Submit Status

人赢邱老师和任何男生比,都是不虚的。有一天,邱老师带妹子(们)来到了一个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
  1. 2
  2. 4 3
  3. 111
  4. 111
  5. 111
  6. 111
  7. 3 3
  8. 111
  9. 101
  10. 111
  1. 10
  2. 4

解题报告:

这是一道记忆化搜索题目,每个格子对应4种形态,每种形态又有2种形态,故共有8种状态.

f(i,j,k,m) -> 在格子(i,j) 时对应形态 k 的第 m 种状态最远可以走X步

  1. #include <iostream>
  2. #include <cstring>
  3. #include <cstdio>
  4. #include <algorithm>
  5. using namespace std;
  6. const int maxn = 1e3 + ;
  7. int maxarrive[maxn][maxn][][],r,c;
  8. bool pass[maxn][maxn];
  9.  
  10. bool inmap(int x,int y)
  11. {
  12. if (x > r || x <= || y > c || y <= || !pass[x][y])
  13. return false;
  14. return true;
  15. }
  16.  
  17. /*
  18. 你拉着提琴,优雅美丽,眼神却逃避
  19. */
  20.  
  21. int dfs(int x,int y,int turn,int st)
  22. {
  23. if (maxarrive[x][y][turn][st] != -)
  24. return maxarrive[x][y][turn][st];
  25. int &ans = maxarrive[x][y][turn][st];
  26. if (!inmap(x,y))
  27. return ans = ;
  28. if (turn == )
  29. {
  30. if (st == )
  31. ans = dfs(x,y+,,) + ;
  32. else
  33. ans = dfs(x-,y,,) + ;
  34. }
  35. else if (turn == )
  36. {
  37. if (st == )
  38. ans = dfs(x+,y,,) + ;
  39. else
  40. ans = dfs(x,y+,,) + ;
  41. }
  42. else if (turn == )
  43. {
  44. if (st == )
  45. ans = dfs(x,y-,,) + ;
  46. else
  47. ans = dfs(x+,y,,) + ;
  48. }
  49. else if (turn == )
  50. {
  51. if (st == )
  52. ans = + dfs(x-,y,,);
  53. else
  54. ans = + dfs(x,y-,,);
  55. }
  56. return ans;
  57. }
  58.  
  59. int main(int argc,char *argv[])
  60. {
  61. int Case;
  62. scanf("%d",&Case);
  63. while(Case--)
  64. {
  65. memset(pass,true,sizeof(pass));
  66. memset(maxarrive,-,sizeof(maxarrive));
  67. scanf("%d%d",&r,&c);
  68. char buffer[];
  69. for(int i = ; i <= r ; ++ i)
  70. {
  71. scanf("%s",buffer);
  72. for(int j = ; j < c ; ++ j)
  73. if (buffer[j] == '')
  74. pass[i][j+] = false;
  75. }
  76. int ans = ;
  77. for(int i = ; i <= r ; ++ i)
  78. for(int j = ; j <= c ; ++ j)
  79. {
  80. if (pass[i][j])
  81. {
  82. int newans = ;
  83. newans += dfs(i-,j,,); // up
  84. newans += dfs(i+,j,,); // down
  85. newans += dfs(i,j-,,); // left
  86. newans += dfs(i,j+,,); // right
  87. ans = max(ans,newans);
  88. }
  89. }
  90. printf("%d\n",ans);
  91. }
  92. return ;
  93. }

UESTC_邱老师降临小行星 2015 UESTC Training for Search Algorithm & String<Problem B>的更多相关文章

  1. 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 ...

  2. UESTC_基爷的中位数 2015 UESTC Training for Search Algorithm & String<Problem D>

    D - 基爷的中位数 Time Limit: 5000/3000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submi ...

  3. UESTC_秋实大哥の恋爱物语 2015 UESTC Training for Search Algorithm & String<Problem K>

    K - 秋实大哥の恋爱物语 Time Limit: 5000/2000MS (Java/Others)     Memory Limit: 32000/32000KB (Java/Others) Su ...

  4. UESTC_全都是秋实大哥 2015 UESTC Training for Search Algorithm & String<Problem J>

    J - 全都是秋实大哥 Time Limit: 5000/2000MS (Java/Others)     Memory Limit: 32000/32000KB (Java/Others) Subm ...

  5. UESTC_吴队长征婚 2015 UESTC Training for Search Algorithm & String<Problem E>

    E - 吴队长征婚 Time Limit: 10000/4000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submi ...

  6. UESTC_基爷与加法等式 2015 UESTC Training for Search Algorithm & String<Problem C>

    C - 基爷与加法等式 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Subm ...

  7. UESTC_王之迷宫 2015 UESTC Training for Search Algorithm & String<Problem A>

    A - 王之迷宫 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit  ...

  8. 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 ...

  9. 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/ ...

随机推荐

  1. 删除list中指定值的元素

    public class ListRemoveAll { public static void main(String[] args) {  // TODO Auto-generated method ...

  2. handsontable插件HOOK事件

    Hook插件 afterChange (changes: Array, source: String):1个或多个单元格的值被改变后调用     changes:是一个2维数组包含row,prop,o ...

  3. Block 代替for循环

    NSDictionary *aDictionary = [[NSDictionary alloc]initWithObjectsAndKeys:", nil]; [aDictionary e ...

  4. struts——文件上传

    上传文件在一个系统当中是一个很常用的功能,也是一个比较重要的功能.今天我们就一起来学习一下Struts2如何上传文件. 今天讲的上传文件的方式有三种: 1,以字节为单位传输文件: 2,Struts2封 ...

  5. 分享一个3D球面标签云

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. iOS:UI系列之UINavigationController

    又到了总结的时间了,突然间感觉时间过得好快啊, 总觉的时间不够用,但是这也没办法啊, 只有自己挤时间了,虽然是零基础,但是这并不能代表什么啦,只要努力,收获总还是有的, 同时我也相信广大的博友肯定也有 ...

  7. 22. 使用 awk / grep / head / tail 命令进行文本 / 日志分析 (/home/D/acc.log)

    一.awk     # 统计 a-read-file 接口 中,接口耗时 超过 0.007 秒的有多少个请求     D@Demon ~]$ awk '$7>0.007' acc.log | w ...

  8. js简单排序

    简单的排序功能 HTML代码: <body> <input id="btn1" type="button" value="排序&qu ...

  9. (转)swfobject.js 详细解说

    一直想对这个应用做个总结,今天偶然百度到这个效果,为此做个笔记. 用这个js的好处: 1.IE中没有讨厌的虚框问题了.2.提供了完善的版本检测功能,如果版本不够则显示其他东西,比如图片或文字.3.易于 ...

  10. django表单及母板

    在之前的埔文中说到了对Model的操作以及对url的路由映射等内容,对应django的mtv框架则是完成了学习,Model与viewer的操作,那么本节主要来唠叨一下template,当Model,v ...