标签:eve resid net 部分 mission bottom break determine include

2 3 2 2 3 3 1 1
1 2HintCase 1 :You can split the floor into five $1 \times 1$ apartments. The answer is 1. Case 2: You can split the floor into three $2 \times 1$ apartments and two $1\times 1$ apartments. The answer is 2. If you want to split the floor into eight $1 \times 1$ apartments, it will be unacceptable because the apartment located on (2,2) can‘t have windows.
题目大意:有n*m的一个矩形地面,要建公寓,如今要求公寓里的房间怎么划分。要求每间房屋都为一个矩形。并且要有一側为矩形的边,除(x,y)位置外不能有空余,(x,y)位置不能建房间,要让房屋面积最大的那个的面积尽量的小。问最小会是多少
如图,黑色的是(x,y)。那么它的上下两块仅仅可被有三个边的某一个覆盖掉,为了让最大的面积最小。要让宽为1。长为三边到空白方格的最小值,还有除了黑色部分的多于部分,要让他们被覆盖掉。能够用上下两条边来建房屋高为(m+1)/2,找出最大的。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std ;
int main() {
int n , m , x , y , ans , min1 , min2 ;
while( scanf("%d %d %d %d", &n, &m, &x, &y) != EOF ) {
if( n > m ) {
swap(n,m) ;
swap(x,y) ;
}
if( n == 1 ) {
printf("1\n") ;
continue ;
}
min1 = min(x-1,min(y,m-y+1)) ;
min2 = min(n-x,min(y,m-y+1)) ;
ans = (n+1)/2 ;
if( n == m && n%2 && ans == x && ans == y )
ans-- ;
printf("%d\n", max(ans,max(min1,min2) )) ;
}
return 0 ;
}
hdu5301(2015多校2)--Buildings(构造)
标签:eve resid net 部分 mission bottom break determine include
原文地址:http://www.cnblogs.com/liguangsunls/p/7008334.html