1227. 分巧克力

摘要
Title: 1227. 分巧克力
Tag: 二分
Memory Limit: 64 MB
Time Limit: 1000 ms

Powered by:NEFU AB-IN

Link

1227. 分巧克力

  • 题意

    儿童节那天有 K 位小朋友到小明家做客。
    小明拿出了珍藏的巧克力招待小朋友们。
    小明一共有 N 块巧克力,其中第 i 块是 Hi×Wi 的方格组成的长方形。
    为了公平起见,小明需要从这 N 块巧克力中切出 K 块巧克力分给小朋友们。
    切出的巧克力需要满足:
    形状是正方形,边长是整数
    大小相同
    例如一块 6×5 的巧克力可以切出 6 块 2×2 的巧克力或者 2 块 3×3 的巧克力。
    当然小朋友们都希望得到的巧克力尽可能大,你能帮小明计算出最大的边长是多少么?

  • 思路

    二分边长即可,最大的也就是最大的宽或者长

  • 代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    '''
    Author: NEFU AB-IN
    Date: 2022-03-22 21:27:03
    FilePath: \ACM\Acwing\1227.py
    LastEditTime: 2022-03-22 21:31:08
    '''


    def check(x):
    cnt = 0
    for i in range(n):
    cnt += ((a[i][0] // x) * (a[i][1] // x))
    return cnt >= k


    n, k = map(int, input().split())
    a = []

    mx = -1
    for i in range(n):
    h, w = map(int, input().split())
    a.append([h, w])
    mx = max(mx, h)
    mx = max(mx, w)

    l, r = 1, mx
    while l < r:
    mid = l + r + 1 >> 1
    if check(mid):
    l = mid
    else:
    r = mid - 1

    print(r)
使用搜索:谷歌必应百度