HDU5301

来源:互联网 发布:程序员简历 markdown 编辑:程序博客网 时间:2024/06/02 02:52
题意:给n*m的矩形区域,剔除其中1*1的方块,然后用不同矩形块填充整个矩形区域,求需要的矩形块最大面积的最小值。

思路:先判把矩形矫正,然后特殊处理边值为奇数,且在中心点的情况,最后处理障碍在其他位置,这个时候要分别枚举障碍周围四个方块对应最外面窗户,正好有三个方向,所以取其中的最小值即可。

#include <cstdio>#include <cstring>#include <algorithm>using namespace std ;int n , m , x , y , ans;int ss(){    ans = (n+1)/2 ;        if( n == m && n%2==1 && ans == x && ans == y )            ans-- ;    int flag = max(ans,max(min(x-1,min(y,m-y+1)),min(n-x,min(y,m-y+1))) );    return flag;}int main() {    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") ;        else            printf("%d\n",ss());    }    return 0 ;}


0 0
原创粉丝点击