P2275 [HNOI2002] 灌溉问题

题目描述

久居山区的人们一直都为水源的问题而烦恼,缺水使得他们的农田无法获得好的收成。最近,一条好消息传来:政$%$府将提供资金为他们开凿一条水道,将唯一的水源——山顶一个湖泊中的水引入他们的村落。人们顿时都高兴了起来,他们的农田终于可以丰收了。 然而,在开凿水道时,人们却遇到了一个难题:怎样开凿才能得到最大的丰收呢? 要知道,山顶的水是非常有限的,并不可能灌溉到每一个地区。而且,不同地区的土地肥沃程度也是不一样的。虽然并非只有河流经过的地区才能被灌溉,但也不可能将水从很远的地方引过来。你现在必须想办法帮他们解决这个问题。 首先,你可以将这个山区划分成 $N \times N$ 的区域,湖泊的位置为 $(x,y)$(下标从 $1$ 开始),以及每个区域的海拔高度(开凿出的河流显然只能从严格高处往严格低流),还有每块区域的土地价值也是已知的。 同时,需要注意的是,你的河流是不允许有分支(支流)的,最多只能灌溉 $M$ 块土地,而且被灌溉的土地只能在离河流的 $R$ 格范围以内(包含对角线)。 注意:河流经过的地区土地依然保持其价值,可以选择是否对其灌溉。 你的目的就是找出一条最好的开凿河流的方法,使得能灌溉的土地价值总和最高。

输入格式

第一行为三个整数 $N,M,R\ (1 \le N \le 20,1 \le M \le \min\{N^2,100\},1 \le R \le \min\{N-1,5\})$,分别给出区域的边长,最多灌溉的土地数和被灌溉土地到河流的最大允许距离。 第二行为两个整数 $x,y\ (1 \le x,y \le N)$,给出了湖泊的位置。 下面一个 $N \times N$ 的矩阵 $A\ (1 \le A_{i,j} \le 200)$,其中 $A_{i,j}$ 表示 $(i,j)$ 的高度。 下面一个 $N \times N$ 的矩阵 $V\ (1 \le V_{i,j} \le 200)$,其中 $V_{i,j}$ 表示 $(i,j)$ 的价值。

输出格式

输出一个整数,表示你的程序计算出的最大价值。

说明/提示

样例解释: 以下是一种最优解。 河流流向: $$(3,3) \to (2,3) \to (2,2) \to (3,2) \to (3,1)$$ 灌溉的土地: $$(1,1),(2,2),(3,2),(3,3),(4,2)$$