本题使用标准输入、标准输出,无需读写题面中提到的文件。
题目描述
Farmer John 发现他的许多奶牛都有些奇怪的广场恐惧症(害怕大片开阔的空间)。为了让它们不那么害怕放牧,他通过修建竖直(南北向)与水平(东西向)的栅栏,把大田地划分成若干较小的区域。
大田地是一个矩形,两个对角点为 与 。FJ 修建了 条竖直栅栏(),位置分别为互不相同的 ();每条栅栏从 延伸到 。
他还修建了 条水平栅栏(),位置为 ();每条栅栏从 延伸到 。每条竖直栅栏都会与每条水平栅栏相交,从而将大田地总共分割成 个区域。
不幸的是,FJ 完全忘了在栅栏上建门,导致奶牛无法离开其所在区域,绕着整片田地活动!他想通过移除部分栅栏来补救,使奶牛能够在相邻区域之间移动。他希望选择若干对相邻区域,并移除分隔它们的整段栅栏;之后,他希望奶牛能通过这些开口自由走动,从而能够到达田地中的任何位置。
例如,FJ 可能先有如下的栅栏图案:
+---+--+
| | |
+---+--+
| | |
| | |
+---+--+
然后把它打开成这样:
+---+--+
| |
+---+ +
| |
| |
+---+--+
请帮助 FJ 确定,为达成目标他最少需要移除的栅栏总长度。
输入格式
第一行输入包含 、、 和 ()。接下来 行包含 ,再之后的 行包含 。
输出格式
输出 FJ 需要移除的最小栅栏长度。注意该值可能过大,无法装入标准 32 位整数,因此你可能需要使用 64 位整数类型(例如 C/C++ 中的 "long long")。
15 15 5 2
2
5
10
6
4
11
3
44
提示
题目来源:Brian Dean
来源
USACO|2016|Platinum