AcWing 1227.分巧克力(二分)

news2024/11/29 7:47:36

一、题目信息

在这里插入图片描述

二、思路分析

先从数据范围入手,这道题的数据范围最大是10的5次方,这就说明我们解决问题时的用到的算法的时间复杂度要控制在 O ( n ) O(n) O(n)或者 O ( n l o g ( n ) ) O(nlog(n)) O(nlog(n))
O ( n l o g ( n ) ) O(nlog(n)) O(nlog(n))的算法中最常用的是二分或者排序

假设我们能过切的最大巧克力的边长是 m m m

对于任意的长 h i h_i hi和宽 w i w_i wi,一块巧克力按照最大边长m去切正方形的话,最多能切: ( H i m ∗ W i m ) (\frac{H_i}{m}*\frac{W_i}{m}) (mHimWi) 个。

那么对于小朋友们的需求K,必定满足下面的式子:

k ≤ ∑ i = 0 n [ H i m ] ∗ [ W i m ] k\leq \sum_{i=0}^{n}[\frac{H_i}{m}]*[\frac{W_i}{m}] ki=0n[mHi][mWi]

而对于任意的 m i m_i mi

m i < m m_i<m mi<m的时候,上述的等式更成立了,因为分母变小了。

m i > m m_i>m mi>m的时候,上述的等式必定是不成立的,因为如果成立的话,说明我们的m还不是最大的。

而我们正方形的边长的最小值是1,可能的最大值取决于我们多组输入中的巧克力中的最大值。

因此,我们有了一个范围,这个答案范围是升序的,因此我们可以将刚才的等式看作判断函数,当作二分的条件

这个判断函数涉及到求和,因此我们需要遍历所有组的巧克力,此时的时间复杂度是O(n)

二分的时间复杂度是log(n),所以我们算法的最终复杂度就是 O ( n l o g ( n ) ) O(nlog(n)) O(nlog(n)),这是能够在1秒之内算完的。

三、代码实现

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
typedef pair<int,int> pii;
const int N=1e5+10;
pii a[N];
int main()
{
    int n,m;
    cin>>n>>m;
    int l=1,r=0;
    for(int i=0;i<n;i++)
    {
        int w,h;
        scanf("%d%d",&w,&h);
        a[i].first=w,a[i].second=h;
        int m=max(w,h);
        r=max(r,m);
    }
    while(l<r)
    {
        int mid=(l+r+1)>>1;
        long long  sum=0;
        for(int i=0;i<n;i++)
        {
            sum+=(long long)(a[i].first/mid)*(a[i].second/mid);
        }
        if(sum>=m)l=mid;
        else r=mid-1;
    }
    cout<<l<<endl;
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/142468.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于RateLimiter+Aop+自定义注解实现QPS限流

QPS秒级限流一、Aop二、自定义注解三、测试类实例QPS简介&#xff1a;QPS&#xff08;Query Per Second&#xff09;&#xff0c;QPS 其实是衡量吞吐量&#xff08;Throughput&#xff09;的一个常用指标&#xff0c;就是说服务器在一秒的时间内处理了多少个请求 —— 我们通常…

控制流分析之构建支配树

控制流分析之构建支配树引言1 分析有向图2 构建支配树2.1 求最小半支配点2.2 求最近支配点引言 如上一个带有起始入口点的有向图为例&#xff0c;从A到Q的必经结点有A、L、M、Q&#xff0c;我们称其为Q的支配点&#xff0c;其中M为Q的最近支配点。我们将每个结点的最近支配结点…

分享124个PHP源码,总有一款适合您

PHP源码 分享124个PHP源码&#xff0c;总有一款适合您 源码下载 链接&#xff1a;https://pan.baidu.com/s/1AIktEQ0-cPRoSSAw_eA2Lw?pwdfb9m 提取码&#xff1a;fb9m 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0…

2022 Apache APISIX 年度记忆

时光已逝&#xff0c;转眼 2022 年已然落下了帷幕。Apache APISIX 社区在众多开源爱好者和开发者的陪伴下&#xff0c;又一起走过了新的四季。 在过去的一年中&#xff0c;我们的开源项目和社区都取得了许多成就&#xff0c;并得到了来自全球范围的广泛关注和支持。2022 年&am…

数据库管理与表文件管理

数据库管理&#xff1a; 1.MySql服务器管理数据库位置&#xff1a;C:\ProgramData\MySQL\MySQL Server 5.5\data 2.查看所有的数据库名 show databases; mysql> show databases;&#xff08;查看有哪些数据库 这属于MySql的命令&#xff0c;不属于SQL语句&…

硅基仿生业务全面 Serverless 容器化,14万+问答库助力糖尿病科普

作者&#xff1a;宁佑章&#xff08;硅基仿生科技&#xff09;、元毅&#xff08;阿里云容器服务&#xff09; “使用阿里云容器服务 Knative&#xff0c;解决了开发迭代慢的问题&#xff0c;加速了深度学习模型的性能提升&#xff1b;同时提供了弹性可伸缩的资源配置&#xf…

关于Linux宝塔面板nginx配置关于php项目的跨域请求

1、网上有好多跨域请求的案例。最多的如下&#xff1a; 在项目下的配置文件中添加&#xff1a; #add_header Access-Control-Allow-Origin * always; #add_header Access-Control-Allow-Credentials true; #add_header Access-Control-Allow-Methods GET,POST,OPTIONS…

新库上线 | CnOpenData中诚信绿金ESG评级数据

中诚信绿金ESG评级数据 一、数据简介 在碳达峰、碳中和的时代浪潮下&#xff0c;以环境、社会、公司治理为核心的ESG投资理念迅速成为发现资本市场投资机遇、规避投资风险的利器。中诚信绿金在多年信用评级经验的基础上通过建立契合国内政策趋势、信息披露现状、行业发展情况…

applicationContext讲解

applicationContext讲解 生成bean 豆子&#xff0c;bean工厂&#xff0c;对象的工厂 id是对象名&#xff0c;豆子的名字&#xff0c;全项目唯一&#xff0c;class是类全路径名 bean标签的底层实现是无参构造方法 <bean id"book1" class"com.nz.entity.Book&q…

【BFS 广度优先搜索】详解感染橘子最短时间问题

一、题目描述 在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a; 值 0 代表空单元格&#xff1b;值 1 代表新鲜橘子&#xff1b;值 2 代表腐烂的橘子。 每分钟&#xff0c;腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回 直…

nginx在linux上的部署

第一步、虚拟机安装新建虚拟机&#xff08;创建的时候记得打开网络连接&#xff0c;使用nat转换的方式&#xff09;linux配置上网第一种方式&#xff1a;自动获取&#xff0c;将ipv4设置为dhcp的自动获取。但是这样每次获取的ip可能不一样。使用xshell连接的时候可能需要修改。…

第四十一讲:神州防火墙透明模式的初始配置

现在要求把防火墙接入到现有的局域网中&#xff0c;尽量不改变已有的LAN架构和IP 地址分配&#xff0c;还能对内网的流量管理进行管理&#xff0c;起到对内网的安全保护作用。防火墙接入要求&#xff0c;应该选择防火墙的工作模式为透明模式。透明模式对原有网络的介入最少&…

把PBP、前端对接、钉钉集成玩透的考试系统

文/刘俊良 周亮 年佳斌 编辑/杜逸敏 一、项目背景 客户需要开发一套企业内部的考试系统&#xff0c;用于企业内部规章制度的学习及考核。系统的主要功能包括&#xff1a; 每个员工都可以进行每日答题与专项答题。根据答题结果&#xff0c;归类不同的题库以供员工查询学习。…

进击的 AI 生成,创造性的新世界!

2022年&#xff0c;AI艺术生成文本生成图像的AI绘画生成器如雨后春笋般涌现&#xff0c;以一幅幅“不明觉厉”的AI作品进入大众视野。从2月Disco Diffusion爆火&#xff0c;仅两个月后OpenAI发布DALL-E 2&#xff0c;谷歌和Meta紧随其后宣布了各自的AI”画家“Imagen和Make-A-S…

尚医通-排班规则接口-排班详情接口-前端整合(二十五)

目录&#xff1a; &#xff08;1&#xff09;医院排班-排班规则接口 &#xff08;2&#xff09;医院排班-排班规则-前端整合 &#xff08;3&#xff09;医院排班-排班详情接口 &#xff08;4&#xff09;医院排班-排班详情前端整合 &#xff08;1&#xff09;医院排班-排班…

一文分析Linux虚拟化KVM-Qemu分析之内存虚拟化

说明&#xff1a; KVM版本&#xff1a;5.9.1QEMU版本&#xff1a;5.0.0工具&#xff1a;Source Insight 3.5&#xff0c; Visio 1. 概述 深入分析Linux虚拟化KVM-Qemu之ARMv8虚拟化文中描述过内存虚拟化大体框架&#xff0c;再来回顾一下&#xff1a; 非虚拟化下的内存的访问…

剑指 Offer 07. 重建二叉树

剑指 Offer 07. 重建二叉树 一、题目 输入某二叉树的前序遍历和中序遍历的结果&#xff0c;请构建该二叉树并返回其根节点。 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 Input: preorder [3,9,20,15,7], inorder [9,3,15,20,7] Output: [3,9,20,null,null,1…

ansible第三天作业

1.挂载本地光盘到/mnt 2.配置yum源仓库文件通过多种方式实现 仓库1 &#xff1a; Name: RH294_Base Description&#xff1a; RH294 base software Base urt: file:///mnt/BaseOS 不需要验证钦件包 GPG 签名 启用此软件仓库 仓库 2: Name: RH294_Stream Description …

QGIS编译---QGIS3.22.4 + Qt5.15.3 + VS2019 ---64位版本

0 编译结果 先放上编译结果&#xff1a; 图1 QGIS3.22 启动界面 图2 QGIS3.22 操作界面 1 前言 因一些主观、客观原因&#xff0c;一年多没更新博客了&#xff0c;提笔继续。 这是笔者编译的第三个版本QGIS&#xff0c;本次编译原因有四&#xff1a; &#xff08;1&#xff…

05-微服务调用组件FeignDubbo实战

JAVA 项目中如何实现接口调用 1&#xff09;Httpclient HttpClient 是 Apache Jakarta Common 下的子项目&#xff0c;用来提供高效的、最新的、功能丰富的支持 Http 协议的客户端编程工具包&#xff0c;并且它支持 HTTP 协议最新版本和建议。HttpClient 相比传统 JDK 自带的UR…