题目描述:

萨丽·斯内尔(Sally Snail,蜗牛)喜欢在 N x N 的棋盘上闲逛(1 < n < 120)。她总是从棋盘的左上角出发。棋盘上有空的格子(用“.”来表示)和 B 个路障(用“#”来表示)。下面是这种表示法的示例棋盘:

A B C D E F G H
1 S . . . . . # .
2 . . . . # . . .
3 . . . . . . . .
4 . . . . . . . .
5 . . . . . # . .
6 # . . . . . . .
7 . . . . . . . .
8 . . . . . . . .

萨丽总是垂直(向上或者向下)或水平(向左或者向右)地走。她可以从出发地(总是记作 A1 )向下或者向右走。
一旦萨丽选定了一个方向,她就会一直走下去。如果她遇到棋盘边缘或者路障,她就停下来,并且转过 90 度。她不可能离开棋盘,或者走进路障当中。并且,萨丽从不跨过她已经经过的格子。当她再也不能走的时候,她就停止散步。
这里是上面的棋盘上的一次散步路线图示:

A B C D E F G H
1 S---------+ # .
2 . . . . # | . .
3 . . . . . | . .
4 . . . . . +---+
5 . . . . . # . |
6 # . . . . . . |
7 +-----------+ |
8 +-------------+

萨丽向右走,再向下,向右,向下,然后向左,再向上,最后向右走。这时她遇到了一个她已经走过的格子,她就停下来了。但是,如果她在 F5 格遇到路障后选择另外一条路——向我们看来是左边的方向转弯,情况就不一样了。

你的任务是计算并输出,如果萨丽聪明地选择她的路线的话,她所能够经过的最多格子数。


INPUT FORMAT
输入的第一行包括 N ——棋盘的大小,和 B ——路障的数量(1 <= B <= 200)。接下来的 B 行包含着路障的位置信息。下面的样例输入对应着上面的示例棋盘。下面的输出文件表示问题的解答。注意,当 N 〉26 时,输入文件就不能表示 Z 列以后的路障了。

SAMPLE INPUT (file snail.in)

8 4 
E2 
A6 
G1 
F5

OUTPUT FORMAT
输出文件应该只由一行组成,即萨丽能够经过的最多格子数。

SAMPLE OUTPUT (file snail.out)
33

这道题目一看就知道是搜索类的题目。一开始没看数据范围的我盲打了个bfs,然后提交上去发现爆空间,改空间之后只能得90分,最后一个点空间超限,所以这道题只能打一个暴力dfs了。
dfs的时候注意如果当前碰到了一个以前跨过的格子,就不能搜索下去,要先判断一下当前tot是否大于max,然后再continue,进行下一个方向的判断。
然后注意回溯的地方,要记录,然后这道题就可以妥妥的变绿了。
代码:
constdx:array[1..4] of Longint=(1,0,-1,0);dy:array[1..4] of Longint=(0,1,0,-1);
vars:string;flag:boolean;a:Array[0..120,0..120] of Longint;n,m,i,j,max,w,sum:longint;
procedure dfs(x,y,tot:Longint);
vari,xx,yy,xs,ys:longint;
beginif (tot>max) then max:=tot;for i:=1 to 4 doif (a[x+dx[i],y+dy[i]]=0) and (x+dx[i]<=n) and (x+dx[i]>0) and (y+dy[i]<=n) and (y+dy[i]>0)  thenbeginxx:=x; yy:=y;flag:=true;w:=tot;while (a[xx+Dx[i],yy+dy[i]]=0) and (xx+dx[i]<=n) and (xx+dx[i]>0) and (yy+dy[i]<=n) and (yy+dy[i]>0) dobegina[xx,yy]:=2;inc(xx,dx[i]); inc(yy,dy[i]);inc(w);if a[xx+dx[i],yy+dy[i]]=2 thenbeginif w>max then max:=w;while (xx<>x) or (yy<>y) dobegina[xx,yy]:=0;dec(xx,dx[i]); dec(yy,dy[i]);end;a[xx,yy]:=0;flag:=false;break;end;end;if flag=false then continue;a[xx,yy]:=2;dfs(xx,yy,w);xs:=x; ys:=y;while (xs<>xx) or (ys<>yy) dobegina[xs,ys]:=0;inc(xs,dx[i]); inc(ys,dy[i]);end;a[xs,ys]:=0;end;
end;beginreadln(n,m);for i:=1 to m dobeginreadln(s);sum:=0;for j:=2 to length(s) dosum:=sum*10+ord(s[j])-48;a[sum,ord(s[1])-64]:=1;end;dfs(1,1,0);writeln(max+1);
end.

【USACO题库】5.2.1 Snail Trails蜗牛的旅行相关推荐

  1. 【USACO题库】3.4.4 Raucous Rockers“破锣摇滚”乐队 题解

    [USACO题库]3.4.4 Raucous Rockers"破锣摇滚"乐队  题解 你刚刚继承了流行的"破锣摇滚"乐队录制的尚未发表的N(1 <= N ...

  2. 【USACO题库】1.2.1 Milking Cows挤牛奶

    一开始认为过不了,后来交就AC了. 1007. [USACO题库]1.2.1 Milking Cows挤牛奶 (File IO): input:milk.in output:milk.out 题目描述 ...

  3. 【USACO题库】1.4.2 The Clocks时钟.TJ

    标题的简介: [USACO题库]1.4.2 The Clocks--Tj https://jzoj.net/junior/#contest/show/1232/11(下文题目描述还是原地址清楚) 考虑 ...

  4. 最简单的USACO,没有之一:【USACO题库】1.3.4 Prime Cryptarithm牛式

    欢迎收看: 保障电脑安全 拒绝编译错误 DEV-C++题解 今天来看一个炒鸡简单的USACO,没有之一. 题目描述 下面是一个乘法竖式,如果用我们给定的那几个数字来取代*,可以使式子成立的话,我们就叫 ...

  5. 【USACO题库】 动态规划 汇总(普及-/普及)

    数据结构提高是够用了=-=虽然树状数组没学 但是其他类问题只能打到普及 普及啊啊啊!!! 而且这边省选组都是什么仙人掌啊,什么系什么点对啊...感觉数据结构并没有什么用 (实际上很有用但我不会用就是了 ...

  6. 【USACO题库】3.2.4 Feed Ratios饲料调配

    这一题,有许多的细节要注意一下!特别是循环中的判断!先看一下代码: #include<cstdio> using namespace std; int a[4][4]; int main( ...

  7. 【USACO题库】1.5.4 Checker Challenge跳棋的挑战

    题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行,每列,每条对角线(包括两条主对角线的所有对角线)上都至多有一个棋子. 列号 1 2 3 4 5 6 --------- ...

  8. 【图论】【最短路】【SPFA】【USACO题库】2.4.4 Bessie Come Home回家(jzoj 1274)

    Bessie Come Home回家 题目大意: 有n条路连接着一些牧场,每个牧场由'a-z'(没羊)和'A-Y'(有一头羊),问哪个有羊的牧场离'Z'最近 INPUT FORMAT 第 1 行: 整 ...

  9. 【USACO题库】3.2.3 Spinning Wheels纺车的轮子

    题目描述     一架纺车有五个纺轮(也就是五个同心圆),这五个不透明的轮子边缘上都有一些缺口.这些缺口必须被迅速而准确地排列好.每个轮子都有一个起始标记(在0度),这样所有的轮子都可以在统一的已知位 ...

  10. 【USACO题库】1.1.4 Broken Necklace破碎的项链

    题目描述: 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=35000),珠子是随意安排的. 这里是 n=29 的二个例子: 1 2 1 2r b b r b r r b ...

最新文章

  1. 服务器群安装系统,服务器安装总结
  2. 今日最佳:你爸爸给你取名的时候。。。
  3. 传智播客软件测试第一期_播客:冒险如何推动一位软件工程师的职业发展
  4. python opencv把32位的灰度图变成8位的灰度图_python简单换脸程序
  5. 【mmdetection】mmdetection数据处理pipline结果可视化
  6. 下单延迟10s撤单性能测试
  7. Zabbix添加网络设备
  8. Javascript中常用的经典技巧
  9. 《鬼谷子》决篇第十一(翻译)
  10. 手机远程服务器总说磁盘空间不足,查询远程服务器上磁盘空间的最佳方式
  11. Windows/Linux 下启动Kafka,外带安装包
  12. 大三,在软件工程学习上的感悟
  13. Ubuntu+OpenCV学习汉字点阵,图片打印汉字
  14. 计算机用户名显示TEMP,Windows 下Temp帐号处理
  15. python字典操作首字母与星期的对应_python:第五章 字典与集合作业
  16. Canvas 画五角星
  17. mysql全备和指定库和表备份,mysql日志的分类简介和作用, mysql加速跳过域名解析,mysql权限授予与收回,数据库实用篇~~Tring
  18. MongoDB数据迁移之迁移工具Kettle
  19. linux scp控制带宽,Linux系统中安装使用Trickle来控制用户带宽
  20. 使用微信小程序获取附近人的位置遇到的坑

热门文章

  1. 「数据架构」什么是实体关系图(ERD)?
  2. Mstar 方案白板书写加速
  3. python中系统找不到指定文件怎么办_python 系统找不到指定的文件
  4. 禅道项目管理软件测试功能模块,禅道使用分享:禅道用例管理流程
  5. python自动化测试绕过手机验证码
  6. “走进名企”之参观微软亚洲研究院
  7. python网页编辑器-网页python编辑
  8. SaaS(软件即服务)的魅力
  9. 云林深处,一场灵魂的宿醉
  10. java swing 图片gif_Java swing显示gif