• hdu5301(2015多校2)--Buildings(构造)


    Buildings

    Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
    Total Submission(s): 472    Accepted Submission(s): 104


    Problem Description
    Your current task is to make a ground plan for a residential building located in HZXJHS. So you must determine a way to split the floor building with walls to make apartments in the shape of a rectangle. Each built wall must be paralled to the building's sides.

    The floor is represented in the ground plan as a large rectangle with dimensions $n imes m$, where each apartment is a smaller rectangle with dimensions $a imes b$ located inside. For each apartment, its dimensions can be different from each other. The number $a$ and $b$ must be integers.

    Additionally, the apartments must completely cover the floor without one $1 imes 1$ square located on $(x,y)$. The apartments must not intersect, but they can touch.

    For this example, this is a sample of $n=2,m=3,x=2,y=2$.



    To prevent darkness indoors, the apartments must have windows. Therefore, each apartment must share its at least one side with the edge of the rectangle representing the floor so it is possible to place a window.

    Your boss XXY wants to minimize the maximum areas of all apartments, now it's your turn to tell him the answer.
     

    Input
    There are at most $10000$ testcases.
    For each testcase, only four space-separated integers, $n,m,x,y(1leq n,m leq 10^8,n imes m > 1, 1leq x leq n, 1 leq y leq m)$.
     

    Output
    For each testcase, print only one interger, representing the answer.
     

    Sample Input
    2 3 2 2 3 3 1 1
     

    Sample Output
    1 2
    Hint
    Case 1 :
    You can split the floor into five $1 imes 1$ apartments. The answer is 1. Case 2:
    You can split the floor into three $2 imes 1$ apartments and two $1 imes 1$ apartments. The answer is 2.
    If you want to split the floor into eight $1 imes 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
    ") ;
                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
    ", max(ans,max(min1,min2) )) ;
        }
        return 0 ;
    }
    


  • 相关阅读:
    ReflectionException: There is no getter for property named
    iframe发送post请求
    wget已安装但命令没找到
    linux性能观察命令
    ELK搭建
    python之中特性(attribute)与属性(property)有什么区别?
    Django中的日志详解
    创建fastdfs_nginx容器及nginx配置
    2. 顺序表 数据结构与算法(python)
    Ubuntu安装和卸载搜狗输入法
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7008334.html
Copyright © 2020-2023  润新知