(二分)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;
}


目录
相关文章
|
JavaScript 前端开发 算法
千分位分隔?一个vue指令搞定
千分位分隔?一个vue指令搞定
354 0
|
10天前
|
存储 人工智能 安全
2026年OpenClaw(Clawdbot)一键部署阿里云官方步骤流程(超详细)
2026年,AI自动化工具迎来全民普及,OpenClaw凭借“自然语言指令+任务自动化”的核心优势,成为个人与轻量团队搭建专属AI助手的首选。其前身为Clawdbot、Moltbot,历经版本迭代后,统一命名为OpenClaw,功能更完善、适配性更强。阿里云为其量身打造了专属一键部署方案,通过预置镜像、简化流程设计,彻底打破技术门槛,无需用户掌握编程技能、无需手动配置复杂环境,零基础新手仅需跟随步骤操作,15分钟内即可完成部署,快速拥有7×24小时在线的专属AI助手。
155 0
|
机器学习/深度学习 人工智能 自然语言处理
【EMNLP2024】面向长文本的文视频表征学习与检索模型 VideoCLIP-XL
阿里云人工智能平台 PAI 与华南理工大学金连文教授团队合作,在自然语言处理顶会 EMNLP 2024 上发表论文《VideoCLIP-XL: Advancing Long Description Understanding for Video CLIP Models》。VideoCLIP-XL 模型,有效地提升了对视频的长文本描述的理解能力。
|
机器学习/深度学习 人工智能 算法
AI - 集成学习
集成学习是一种机器学习策略,它通过组合多个模型(称为基学习器)来创建一个更强大、更稳健的预测模型。基学习器可以是不同类型或同类型的模型,如决策树、SVM、神经网络等。
|
人工智能 数据可视化 数据挖掘
AI时代浪潮来袭,项目经理如何应对?
AI时代,项目经理如何顺势而为、保持核心竞争力?从角色升级到技能转型,文章揭示AI对项目管理的深刻影响,并提供项目经理应对未来的关键策略。
458 4
|
存储 人工智能 弹性计算
通义万相AI绘画创作的解决方案评测
通义万相AI绘画创作的解决方案评测
460 2
|
机器学习/深度学习 人工智能 自然语言处理
智能引领未来:精准选择与高效利用AI技术的实战指南
【7月更文第14天】在当今科技飞速发展的时代,人工智能(AI)已不再局限于科幻电影的想象,而是成为了推动各行各业革新升级的核心驱动力。从自动驾驶汽车到个性化推荐系统,从医疗诊断辅助到智能制造,AI正深刻改变着我们的生活和工作方式。然而,面对琳琅满目的AI技术和工具,如何精准选择并高效利用AI,成为企业和开发者亟需解决的关键问题。本文将为您揭示这一过程中的核心策略与实践技巧,并通过一个简单的代码示例,让您直观感受AI技术的魅力。
914 3
|
监控 JavaScript 前端开发
深入理解与实践:利用监听事件优化应用程序响应性
【7月更文挑战第3天】事件监听是软件开发中的关键,基于“发布-订阅”模式,用于响应用户操作、系统变化等。常见于UI交互、异步编程、系统事件和游戏开发。JavaScript示例展示了如何监听按钮点击:添加事件监听器到元素,定义处理函数。进阶技巧包括事件委托、冒泡与捕获、节流和防抖,用于优化性能和用户体验。理解并运用事件监听能提升应用质量。
581 2
|
监控 网络协议 Linux
在Linux中,如何排查网络连接问题?
在Linux中,如何排查网络连接问题?
|
人机交互 调度 Windows
操作系统的概念、并发和并行的区别、操作系统的发展和分类
操作系统的概念、并发和并行的区别、操作系统的发展和分类
458 2

热门文章

最新文章