分巧克力-二分

分巧克力——二分法 标题: 分巧克力 儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。 为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足: 1. 形状是正方形,边长是整数 2. 大小相同 例如一块6x5的巧克力可以切出6块2x2... 阅读详情

原题链接

分巧克力2017蓝桥
儿童节那天有 K 位小朋友到小明家做客。
小明拿出了珍藏的巧克力招待小朋友们。
小明一共有 N 块巧克力,其中第 i 块是 H i × W i Hi×Wi Hi×Wi 的方格组成的长方形。为了公平起见,小明需要从这 N 块巧克力中切出 K 块巧克力分给小朋友们。
切出的巧克力需要满足:

  • 形状是正方形
  • 边长是整数大小相同

例如一块 6×5 的巧克力可以切出 6 块 2×2 的巧克力或者 2 块 3×3 的巧克力。

当然小朋友们都希望得到的巧克力尽可能大,你能帮小明计算出最大的边长是多少么?

二分查找

从1至给出的最大边界中二分查找边长
通过把巧克力整除边长,用int直接向下取整,乘积即可得到可以分的巧克力数

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#define x first
#define y second
using namespace std;
typedef pair<int, int> PII;
int n, k;
vector<PII> v;

bool check(int a) { // 保证了边长相同,且为正方形
    int res = 0;
    for (auto t: v) { 
        res += ((t.x / a) * (t.y / a)); // 计算按边长a可以分的巧克力数
        if (res >= k) return true;
    }
    return false;
}

int main() {
    scanf("%d%d", &n, &k);
    int r = 0;
    for (int i = 0; i < n; i++) {
        int h, w;
        scanf("%d %d", &h, &w);
        v.push_back({h, w});
        r = max(r, h);
        r = max(r, w);
    }
    int l = 1;
    while (l < r) {
        int mid = l + r + 1 >> 1;
        if (check(mid)) l = mid;
        else r = mid - 1;
    }
    cout << l << endl;
    
    return 0;
}
从CentOS迁移到openEuler 24.03 LTS:手把手教你部署Java+MySQL+Redis+Nginx全栈环境 本文详细指导如何从CentOS迁移到openEuler 24.03 LTS,并部署Java+MySQL+Redis+Nginx全栈环境。涵盖系统配置、软件安装、性能优化及环境验证,助力企业级用户高效完成服务器迁移与部署。 阅读详情

相关推荐

chipseeker Y叔

这一次讲解非常重要的peak注释,注释在ChIPseeker里只需要用到一个函数annotatePeak,它可以满足大家各方面的需求。 输入 当然需要我们上次讲到的BED文件,ChIPseeker自带了5个BED文件,用getSampleFiles()可以拿到文件的全路径,它返回的是个named list,我这里取第4个文件来演示。annotatePeak的输入也可以是GRanges对象,你如果用R做peak calling的话,直接就可以衔接上ChIPseeker了。 require(ChIPseeke

生信小博士的博客 1588

分巧克力

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

za30312的博客 611

【AI绘图进阶指南】Latent Diffusion Model核心组件解析——从理论到实践

本文深入解析Latent Diffusion Model(LDM)的核心组件,包括Autoencoder、Denoiser和Conditioning Encoder的工作原理及实践应用。通过理论结合代码示例,揭示LDM如何高效处理图像生成任务,并优化AI绘图流程,为开发者提供从理论到实践的进阶指南。

weixin_42628941的博客 383

HNUST OJ 2286 亲和数

问题 I: 亲和数 时间限制: 1 Sec 内存限制: 128 MB 题目描述 两个正整数中,彼此的全部约数之和(本身除外)与另一方相等,则称这两数为亲和数。 例如,220和284就互为亲和数。 输入 输入不超过1000行数字,每行一个正整数n(1 < n <= 106)。 输出 输出[1,n]中有亲和数对的数目。 样例输入 250 300 样例输出 0 1 思路 打表咯 #include <bits/stdc++.h> ...

qq_30777847的博客 774

使用trae自动生成前后端分离的web应用程序

使用ai自动生成前后端分离的web应用程序

一介书生 2524

STM32基于软件模拟IIC进行AHT21B温湿度采集

通过学习软件IIC来进行实操AHT21B采集温湿度。

Liu-FE的博客 3700

二分算法:分巧克力(第八届蓝桥杯省赛C++A/B组,第八届蓝桥杯省赛JAVAA/B组)

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

weixin_51160138的博客 287

【WRF-Chem Emissions教程第一期】WRF-Chem 排放概述

WRF-Chem 排放概述

WW、forever的博客 852

【蓝桥杯】 2017初赛 分巧克力 二分

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

qianzhezhi1127的博客 1272

【数据集】未来不同情景下预测数据:如人口、土地利用等

未来不同情景下预测数据:如人口、土地利用等

WW、forever的博客 2994

ubuntu20.04屏幕亮度无法调节(亮度条调节无效)的简单靠谱解决方案及踩坑历程

0 前言   网上关于ubuntu系统亮度无法调节的问题的解决方法有很多,但是绝大部分并没有什么用(这也是我自己的亲身体会),或者并不靠谱。在遍尝各路方法过后,我终于解决了这一棘手的问题(毕竟最大亮度真的非常刺眼,无法长时间直视),在此记录一下踩坑历程以及最后的解决方案。 1 Naive方法   由于使用需要,最近在电脑原有的win10基础上安装了ubuntu双系统。我安装的是当前新版的ubuntu20.04.2.0,靠谱的安装教程可以参考这里。   之前师兄说双ssd安装双系统会有系统启动引导的问题出现,

zeeq的博客 4万+

二分法——分巧克力

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

2401_89111866的博客 844

硬件知识点-----SPI串联电阻、振铃、过冲

电阻取值,没有公式,一被传输线的特征阻抗为50欧姆左右,而TTL电路输出电阻大桃为13欧姆左右,在源端串一个33姆,大致和50相当,这样就可以柳制从终端反射回来的倍号,防止再次反射。传输时间tp=L/V,其中L是导线长度,V是电磁波在电路板中的传输速度V=C/sqrDk,其中Dk是光速衰减因子,对于电路板而言是铜线,Dk=4电磁波在电路板中的速度都是慢于光速的。实际上串联多大的电阻与传输线的阻抗有关,为了保证阻抗的连续性,如果传输线的特性阻抗 Z0与驱动源的输出阻抗 Zd不匹配,会引发信号的反射。

贾saisai的博客 2714

二分法之分巧克力

但是由于right取实数,那么根据数组的规则(为防止越界行为出现),就要对right = size-1,mid也为实数,在计算中,也将mid包含进去进行判断,因此在查找的后续一半中,就不用再将mid加入循环了。1.left

weixin_74612475的博客 249

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

分巧克力(二分)

刚开始时本人思路是通过计算每块巧克力的面积,想着除以要分得的巧克力的面积就可以得到分了多少个,而且我还特别判断了每块大巧克力的边长够不够切,结果调试了很久。sum=(3*3)/(2*2)=2算出来比正确答案多一,这也就解释了为什么上面样例我的答案比正确答案多一,因为按照这种计算方法多计算了。然后就一直调试,一步一步看,最后发现我写的代码当小巧克力的边长为6时分到的小巧克力的总数会大于k,但是别人的代码这样分的数量小于k。来看一个数据:假设原来的巧克力是3×3的正方形,要得到2×2的小巧克力,问可以切几块。

2302_79175617的博客 1260

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

蓝桥杯——分巧克力——二分法

标题: 分巧克力 儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。 为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足: 1. 形状是正方形,边长是整数 2. 大小相同 例如一块6x5的巧克力可以切出6块2x...

半旧。 1079

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

分巧克力 蓝桥杯 A组 C++ 二分法

标题: 分巧克力 儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。 为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足: 1. 形状是正方形,边长是整数 2. 大小相同 例如一块6x5的巧克力可以切出6块2x2的巧克力或者2块3x3的巧克力。 当然小朋...

Sylvia_Wu51的博客 317

分巧克力(二分法)

标题: 分巧克力 儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。 为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足: 1. 形状是正方形,边长是整数 2. 大小相同 例如一块6x5的巧克力可以切出6块2x2的巧克力或者2块3x3的巧克力。 当然小朋...

xd-cy的博客 812

历届试题 分巧克力 (二分)

题目地址 分巧克力 解题思路 二分查找长度,每次判断能不能凑成,能凑成就继续往上查找,否则向下查找。 AC代码 #include <iostream> using namespace std; int main() { int N,K,r=100001,l=1,ans=0,h[100000],w[100000]; cin>>N>>K; for(int i=...

qq_43227036的博客 296

二分答案-P8647 [蓝桥杯 2017 省 AB] 分巧克力

本题通过二分查找将问题转化为验证性问题,显著提高了效率。确定二分查找的边界设计高效的验证函数处理边界条件和优化计算这种"二分答案+验证"的思路在解决最大值最小化或最小值最大化问题时非常有效。

hongjianMa的博客 636

二分——分巧克力

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

m0_60738889的博客 1093

分巧克力 二分

思考可以发现当边长大于某一个值以后切出的巧克力数量都不满足,所以可以使用二分。

zaqjkl的博客 229

【二分】分巧克力

分巧克力 对于给了范围,没给推导方式的题目,用二分 #include<iostream> #include<cstdio> #include<string> #include<algorithm> #include<cmath> const int N = 1e5 + 10; using namespace std; int n,k,H[N],W[N]; bool check(int mid){ int cnt = 0;

m0_46399726的博客 282

二分-分巧克力

问题描述儿童节那天有 KK 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。小明一共有 NN 块巧克力,其中第 ii 块是 Hi×WiHi​×Wi 的方格组成的长方形。为了公平起见,小明需要从这 NN 块巧克力中切出 K 块巧克力分给小朋友们。切出的巧克力需要满足:形状是正方形,边长是整数;大小相同;例如一块 6×56×5 的巧克力可以切出 66 块 2×22×2 的巧克力或者 22 块 3×33×3 的巧克力。

iubeautiful的博客 310

【分巧克力,二分查找最大解】

儿童节那天有 KK 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。小明一共有 NN 块巧克力,其中第 ii 块是 Hi×WiHi​×Wi​ 的方格组成的长方形。为了公平起见,小明需要从这 NN 块巧克力中切出 KK 块巧克力分给小朋友们。切出的巧克力需要满足:形状是正方形,边长是整数。大小相同。例如一块 6×56×5 的巧克力可以切出 66 块 2×22×2 的巧克力或者 22 块 3×33×3 的巧克力。

xiworldla的博客 410

分巧克力(二分查找)

注意cnt+=a[i]/mid*(b[i]/mid);如果写成cnt += a[i] * b[i] / mid;先乘法会溢出导致结果出错,所以要先分别除以mid再乘。可以切割出足够多的巧克力块。太大,无法切割出足够的块数,因此将。下每块巧克力可以切割出的块数。来找到最大可行的边长。二分查找的核心在于找到。这意味着我们可以使用。

Ct314的博客 653
上一篇: 蓝桥四平方和-枚举||二分||哈希
下一篇: 洛谷P1088 火星人-next_permutation的使用
CodeSlogan
博客等级 码龄6年 4227粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeSlogan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值