计算机科学

图算法

图表算法:5级挑战

我们的英雄林克,发现自己在一个最平原的森林。在他的周围,北面,东面,西面和南面,都是开阔的草地,密不透风的树林,以及分散的,稀有的心块。问题是:林克能得到所有这些吗?

这个链接包含一个zip文件,在输入格式为这个问题集合指定的 1000 1000 迷宫。

年代 年代 是Link可以访问迷宫中所有Hearts的所有索引(基于1)的总和,通过在空地和Heart Pieces上、下、左或右移动,但不是不可穿透的森林。找到 年代 \盒装{年代}


例子:

输入:

3 2 2 l # # h 3 3 l ..# #。H . .6 6 h ..... .####H ####. ..... L

输出:

2

输出解释道:

在第一个迷宫中,有一个Heart Piece,但是Link不能进入它——在两个方向上都有无法穿透的树,并且Link不能对角移动。

在第二个迷宫中,有一个Heart Piece, Link可以通过向右,向右,向下,向下,向左,再次向左访问它,所以我们添加了它的索引, 2 2 总的来说。

在第三个迷宫中,有4个Heart Pieces,虽然Link可以到达其中的3个,但第4个Heart Pieces被挡在中间,所以我们不把这个迷宫的指标加到总数中。

因此,只有 2 2 加到总数上,所以答案是 2 \盒装{2}


细节:

  • Link在每个迷宫中都会以“L”的形式出现一次。
  • 每个迷宫都有一个正数的心形碎片,如“H”。
  • 开阔地以'.'表示。
  • 不可穿透的树用'#'表示。
  • 每个迷宫中不会出现其他角色。
  • 1 W H 150 1 \leq W,H \leq 150 在所有的迷宫。

    (1) -这个链接目前指向我的Dropbox账户,因为目前没有办法上传非图片内容到Brilliant。管理员,如果有更改,请删除此脚注。


这是收藏品的一部分失去了森林, CS /图论的一系列问题。

图片来源:http://www.piranhazone.com/index.php?language=1&page=zelda/mq&topic=ootmq005&pic=gc

最后一次在美国,萨莉在她的花园里走来走去,在每个广场吃着一个苹果。

但这次莎莉感觉更热情了。这次她要做同样的动作但现在,她也可以对角线移动。找出Sally吃完25个苹果的几种方法

细节和假设

  • 她有一个 5 × 5 5 \ * 5 花园里有25个苹果。

  • 她可以向前、向后、向上、向下或对角线移动,只要她要移动的单元格中有一个苹果。

  • 她正站在花园的中央。 3. 理查德·道金斯 3 ^{\文本{rd}} 行和 3. 理查德·道金斯 3 ^{\文本{rd}} 列。

  • 如果花园是大的 3. × 3. 3 \乘以3 ,那么她可以用32种方式吃掉所有的苹果。

警告

  • 最好的c++代码(到目前为止)需要将近100秒四核 2.67 2.67 GHz处理器。所以,如果你的代码运行很长时间也是可以的。

灵感

森林的黑暗仍在继续,尽管在这片狭窄而紧凑的森林中,英雄并没有遇到任何新的或危险的东西。充满魔力并对自己的计划技能充满信心的林克现在决定同时解决两个他已经面临的挑战:收集所有在木头里的Heart Pieces使用尽可能少的魔法移除可切割的树。他很快发现,尽管任务表面上很简单,但比他最初意识到的要困难得多。

这个链接(1)包含一个zip文件,单文件在输入格式为这个问题集合指定的 1000 1000 迷宫。

年代 年代 是每个迷宫得分的总和。我们将分数定义为迷宫的索引(基于1)乘以Link如果想要获得迷宫中的所有Heart Pieces必须砍掉的最小树木数量。每个迷宫中至少有一个Heart Piece,最多有三个Heart Piece,并且所有的Heart Piece都是可访问的。然而,请注意,当Link删除树时,它保持cut down -他不需要花费额外的魔法通过相同的树在相同的迷宫两次。

找到 年代 \盒装{年代}


例子:

输入:

3 5 5 tt。TH。# # T .T。#。T #。# T LT.T。5 3 h h t ### t T.L.T 9 9 #### h #### #. t…# # T # # # # T # #.##.##.# L.T.T.T.H # # # # #。T T # # # # # # # # .T…T。# # # # # # # # #

输出:

24

输出解释道:

在第一个迷宫中,只有一个Heart Piece,所以我们只需要找到Link和Heart Piece之间的最短路径(根据树的数量)。最好的路线是向右,然后向上,然后再向右,只击中 3. 3. 树,所以迷宫的得分是 1 1 (索引) 3. 3.

在第二个迷宫中,Link可以在左边砍两棵树,在右边砍两棵树,分别取回两颗Heart Pieces,但只有一棵树将Heart Pieces分开,所以最好在取到第一个Heart Piece后再走那条路。比分是这样 2 2 3. 3.

在第三个迷宫中,每三个Heart Pieces和Link被两棵树按顺时针方向分开,所以Link可以绕着周长,砍倒 6 6 收集所有的树木。然而,在迷宫的中心,有一个构型 5 5 树木将一切分开。虽然从林克从中间走到任何一颗心块比从两边走到中间需要更多魔法,但清除中间的树更有效,因为他可以只用一根魔杖就到达所有的心块 5 5 削减,而不是 6 6

1 × 3. + 2 × 3. + 3. × 5 24 1 × 3 + 2 × 3 + 3 × 5 = 24


细节:

  • Link在每个迷宫中都会以“L”的形式出现一次。
  • 每个迷宫中至少有一个,最多三个Heart piece,即“H”。
  • 开阔地以'.'表示。
  • 不可穿透的树用'#'表示。
  • 可切割树用“T”表示。
  • 每个迷宫中不会出现其他角色。
  • 这次是更小的迷宫: 1 W H 10 1 \ lq W,H \ lq q 在所有的迷宫。

    (1) -这个链接目前指向我的Dropbox账户,因为目前没有办法上传非图片内容到Brilliant。管理员,如果有更改,请删除此脚注。


这是收藏品的一部分失去了森林, CS /图论的一系列问题。

图片来源:http://www.sodahead.com/fun/do-you-like-to-walk-in-the-woods/question-2168027/
×

问题加载…

注意加载…

设置加载…