zoukankan      html  css  js  c++  java
  • 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 ;
    }
    


  • 相关阅读:
    【转】HTML5的小知识点小集合
    11月15日下午 ajax返回数据类型为XML数据的处理
    11月15日下午 用代码操作文件(文件夹)
    11月15日上午文件上传
    11月14日用AJAX、PHP、SESSION做购物车
    各种进位制转换
    11月13日上午ajax返回数据类型为JSON数据的处理
    11月13日上午省、市、区(县)三级联动
    11月10日下午 ajax做显示信息以后用ajax、Bootstrp做弹窗显示信息详情
    11月10日上午ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7008334.html
Copyright © 2011-2022 走看看