(二分)1227. 分巧克力

简介: (二分)1227. 分巧克力

题目链接

1227. 分巧克力 - AcWing题库


一些话

跟cf上的一道铺设地板的题的手法有共通之处,

都是拿长宽/地板边长,然后相乘

切入点

为了公平起见,小明需要从这 N 块巧克力中切出 K 块巧克力分给小朋友们。

切出的巧克力需要满足:

  1. 形状是正方形,边长是整数
  2. 大小相同

边长与数量成负相关,符合二分的特征


流程

二分答案check函数伪代码(流程)

// mid长度,cnt计数,枚举巧克力,用长宽除mid再相乘得到数字加入cnt,最后再和k比较

二分边界变化

// 因为mid与cnt成反比,所以cnt>k了就缩小左边界让mid变大,cnt<k了就缩小右边界让mid变小,

// 巧克力最大就是边长最大,边长最大就是mid最大,为了让mid最大,当cnt等于k时缩小左边界就可以让mid最大

套路


ac代码

//16 : 52 ~17:07wa
// mid长度,cnt计数,枚举巧克力,用长宽除mid再相乘得到数字加入cnt,,
// 因为mid与cnt成反比,所以cnt>k了就缩小左边界让mid变大,cnt<k了就缩小右边界让mid变小,
// 巧克力最大就是边长最大,边长最大就是mid最大,为了让mid最大,当cnt等于k时缩小左边界就可以让mid最大
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 1e5 + 10;
int n,k;
int l[N],w[N];
bool check(int mid){
    int cnt = 0;
    for(int i = 0;i < n;i++){
        cnt += (l[i] / mid) * (w[i] / mid);
    }
    if(cnt >= k) return true;
    else return false;
}
int main(){
    cin >> n >> k;
    for(int i = 0;i < n;i++){
        scanf("%d%d",&l[i],&w[i]);
    }
    int l = 1,r = 1e5;
    while(l < r){
        int mid = l + r + 1>> 1;
        if(check(mid)) l =mid ;
        else r = mid - 1;
    }
    cout << l << endl;
    return 0;
}


目录
相关文章
|
关系型数据库 MySQL 数据库
【Hello mysql】 mysql的内置函数(下)
【Hello mysql】 mysql的内置函数
171 0
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
【EMNLP2024】面向长文本的文视频表征学习与检索模型 VideoCLIP-XL
阿里云人工智能平台 PAI 与华南理工大学金连文教授团队合作,在自然语言处理顶会 EMNLP 2024 上发表论文《VideoCLIP-XL: Advancing Long Description Understanding for Video CLIP Models》。VideoCLIP-XL 模型,有效地提升了对视频的长文本描述的理解能力。
|
机器学习/深度学习 人工智能 算法
AI - 集成学习
集成学习是一种机器学习策略,它通过组合多个模型(称为基学习器)来创建一个更强大、更稳健的预测模型。基学习器可以是不同类型或同类型的模型,如决策树、SVM、神经网络等。
|
Ubuntu Linux Docker
win10下的docker桌面端配置ubuntu进行访问
win10下的docker桌面端配置ubuntu进行访问
462 0
|
前端开发 Java 数据库
75.【JavaWeb-03】(一)
75.【JavaWeb-03】
71 0
|
消息中间件 Java
|
缓存 Java 测试技术
工作多年后我更明白了UT的重要性(上)
对于有经验的开发写单元测试是非常有必要的,并且对自己的代码质量以及编码能力也是有提高的。单元测试可以帮助减少bug泄露,通过运行单元测试可以直接测试各个功能的正确性,bug可以提前发现并解决,由于可以跟断点,所以能够比较快的定位问题,比泄露到生产环境再定位要代价小很多。同时充足的UT是保证重构正确性的有效手段,有了足够的UT防护,才能放开手脚大胆重构已有代码,工 作多年后更了解了UT,了解了UT的重要性。 
488 0
|
存储 Unix 数据库
solaris 11.4 硬盘管理
solaris 11.4 硬盘管理
247 0
|
4天前
|
弹性计算 人工智能 安全
云上十五年——「弹性计算十五周年」系列客户故事(第二期)
阿里云弹性计算十五年深耕,以第九代ECS g9i实例引领算力革新。携手海尔三翼鸟、小鹏汽车、微帧科技等企业,实现性能跃升与成本优化,赋能AI、物联网、智能驾驶等前沿场景,共绘云端增长新图景。