C. 裁缝师(tailor)

    Type: Default File IO: tailor 1000ms 256MiB

裁缝师(tailor)

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目描述

老李是某布行资深的裁缝师傅,他经常要将一块布裁剪成若干块小布。他是这样裁剪布料的:一刀下去,不管布有多长,都是沿直线剪开它为止。当然,他还可以一次剪多层布料,至于一次能剪多少层,则依赖于该布料的类型。例如:对于某种布料来说,一次只能剪一层布,那么要把一块 2×3 2 \times 3 的布料剪成 6 块 1×1 1 \times 1 的小布,总共需要剪 5 刀,如下图:

但是,对于另外一种不同的布料来说,如果这种布料一次可以剪两层布,那么只需要三刀就可以剪开布料了(剪完第一刀后,把剪开的两块布叠在一起,再剪第二、第三刀)。显然,在剪的过程中,叠放在一起剪的几块布料是可以不同形状的。比如 1×2 1 \times 2 的布料是可以叠放在 2×2 2 \times 2 的布料上裁剪的。注意,一块布料本身是不能折叠,所以 1×3 1 \times 3 的布料需要剪 2 刀,而不是 1 刀(对折再剪)。

老李想知道对于一块 N×M N \times M 的大布料,最少用多少刀就可以把它裁剪成 N×M N \times M 1×1 1 \times 1 的小布块。现在老李请你编写一个程序来完成这个任务。

输入格式

输入文件为 tailor.in
文件只有一行,共有三个数 L L N N M M 。第一个数 L L 1L200 1 \leq L \leq 200 )表示一刀可以裁剪的最大层数;第二个数 N N 和第三个数 M M 1N,M20 1 \leq N, M \leq 20 )表示布料的尺寸(三个数之间用一个或多个空格分开)。

输出格式

输出文件为 tailor.out
只有一个数,表示裁剪布料的最少刀数。

样例输入

1 3 2

样例输出

5

【月赛】五月月赛

Not Attended
Status
Done
Rule
OI
Problem
3
Start at
2025-5-24 14:30
End at
2025-5-30 14:30
Duration
144 hour(s)
Host
Partic.
8