AcWing
  • 首页
  • 课程
  • 题库
  • 更多
    • 竞赛
    • 题解
    • 分享
    • 问答
    • 应用
    • 校园
  • 关闭
    历史记录
    清除记录
    猜你想搜
    AcWing热点
  • App
  • 登录/注册

AcWing 1227. 分巧克力    原题链接    简单

作者: 作者的头像   acwing_55520 ,  2024-08-04 21:24:55 ,  所有人可见 ,  阅读 3


0


题目描述

blablabla

思路

在理解题意后发现并不容易找出最合适的边长,所以想到使用二分,相当于多加了一个条件,以此来一步步逼近最合适的边长
分巧克力.jpg

#include <iostream>
#include <algorithm>

using namespace std;
typedef long long LL;
const int N = 100010;
int n,k;
int h[N],w[N];

bool check(int mid){
    LL num = 0;
    for(int i = 0;i < n;i++){
        // 这里使用LL是因为如果边长取1,就会是10的5次方的平方,这个可能爆
        num += (LL)(h[i] / mid) * (w[i] / mid);
        if(num >= k) return true;
    }

    return false;
}

int main(){
    scanf("%d%d",&n,&k);
    for(int i = 0;i < n;i++){
        scanf("%d%d",&h[i],&w[i]);
    }

    // 二分模板二,根据check来判断
    int l = 1,r = 1e5;
    while(l < r){
        int mid = (l + r + 1)>> 1;
        if(check(mid)) l = mid;
        else r = mid - 1;
    }

    printf("%d",l);
    return 0;
}

算法1

(暴力枚举) $O(n^2)$

blablabla

时间复杂度

参考文献

C++ 代码

blablabla

算法2

(暴力枚举) $O(n^2)$

blablabla

时间复杂度

参考文献

C++ 代码

blablabla

0 评论

App 内打开
你确定删除吗?
1024
x

© 2018-2025 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息