CF375C Circling Round Treasures

题目描述

给你一个 $N \times M$ 的地图($N,M \le 20$),地图上 `#` 表示障碍物,`B` 表示炸弹,数字表示宝藏序号(宝藏+炸弹个数 $\le 8$),每个宝藏有价值($-200 \le v \le 200$),`S` 表示出发点。每次移动可以从一个格子移动到相邻格子(上下左右)。寻找一条路径从 `S` 出发再回到 `S` 的封闭路径,移动步数记为 $K$,这个路径所包围的宝藏价值总和记为 $V$,则这条路径的价值为 $V - K$。题目即是求可行的最大的路径价值,并且不能包围炸弹。

输入格式

第一行两个整数 $N, M$ 表示地图的长和宽 接下来 $N$ 行,每行 $M$ 个字符,描述整个地图,地图只可能包含如下字符: 字符 `B` 表示炸弹; 字符 `S` 表示起点,保证有且只有一个; 数字 $c$($1 \sim 8$)代表宝藏标号,宝藏和炸弹加起来最多只有 $8$ 个; 字符 `.` 表示空白格; 字符 `#` 表示障碍物(墙); 假设地图包含 $t$ 个宝藏,接下来 $t$ 行,每行一个整数 $v_i$($-200 \le v_i \le 200$),依序表示第 $i$ 个宝藏的价值。

输出格式

一个整数,即能够获得的最大价值 感谢@xjdx 提供的翻译

说明/提示

In the first example the answer will look as follows. ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF375C/cb0dbb1d435c2b4c4d748d9831291d273e4bf3cf.png)In the second example the answer will look as follows. ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF375C/8027ff788009012e6263f482eda32fa57c7a9ae8.png)In the third example you cannot get profit. In the fourth example you cannot get profit as you cannot construct a closed path with more than one cell.