luogu#P2275. [HNOI2002] 灌溉问题
[HNOI2002] 灌溉问题
题目描述
久居山区的人们一直都为水源的问题而烦恼,缺水使得他们的农田无法获得好的收成。最近,一条好消息传来:政府将提供资金为他们开凿一条水道,将唯一的水源¬——山顶一个湖泊中的水引入他们的村落。人们顿时都高兴了起来,他们的农田终于可以丰收了。
然而,在开凿水道时,人们却遇到了一个难题:怎样开凿才能得到最大的丰收呢?
要知道,山顶的水是非常有限的,并不可能灌溉到每一个地区。而且,不同地区的土地肥沃程度也是不一样的。虽然并非只有河流经过的地区才能被灌溉,但也不可能将水从很远的地方引过来。你现在必须想办法帮他们解决这个问题。
首先,你可以将这个山区划分成N*N的区域,湖泊的位置(x,y),以及每个区域的海拔高度(开凿出的河流显然只能从高往低流),还有每块区域的土地价值也是已知的。同时,需要注意的是,你的河流是不允许有分支(支流)的,最多只能灌溉M块土地,而且被灌溉的土地只能在离河流的R格范围以内(包含对角线)。
注意:河流经过的地区土地依然保持其价值,可以选择是否对其灌溉。
你的目的就是找出一条最好的开凿河流的方法,使得能灌溉的土地价值总和最高。
输入格式
文件第一行为三个整数N,M,R,分别给出区域的边长,最多灌溉的土地数和被灌溉土地到河流的最大允许距离。(N<=20,M<=100,R<=5)
文件的第二行为两个整数x,y,给出了湖泊的位置。
接下来是两个N*N的矩阵,第一个矩阵是各区域的海拔高度,第二个矩阵是各区域的土地价值。
输出格式
输出文件为river.out。 文件中只有一个整数max,是你的程序计算出的最大价值。
5 5 1
3 3
1 1 1 1 1
1 6 9 5 1
1 3 10 3 1
1 2 1 2 1
1 1 1 1 1
4 1 1 1 2
1 1 1 1 1
1 2 3 1 2
1 2 1 1 1
1 1 1 1 1
12