【每日一题2019-11-14】-蓝桥杯 prev37 分巧克力

文章目录

  • 【每日一题2019-11-14】-蓝桥杯 prev37 分巧克力
    • 1.问题描述
    • 2.输入格式
    • 3.样例输入
    • 4.样例输出
    • 5.分析
    • 6.代码
    • 7.参考

1.问题描述

儿童节那天有 k 位小朋友来到小明家做客,小明拿出了珍藏的巧克力招待小朋友

小明一共有N块,其中第 i 块是 Hi∗WiH_i * W_iHi​∗Wi​的方格组成的长方形。

为了公平起见,小明需要从这 N 块巧克力总切出 k 块巧克力分给小朋友们,切出的巧克力需要满足

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

例如:一块 6*5 的巧克力可以切出 6 块 2 * 2 的巧克力或者 2快 3 * 3 的巧克力

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

2.输入格式

第一行包含两个整数 N 和 K (1<=N, K <=100000)

以下 N 行每行包括两个整数 HiH_iHi​和WiW_iWi​(1<=HiH_iHi​,Wi<=100000W_i<=100000Wi​<=100000)

输出保证每位小朋友至少能获得一块 1*1 的巧克力

3.样例输入

2 10
6 5
5 6

4.样例输出

输出切出的正方形巧克力最大可能的边长

2

5.分析

暴力搜索,从大到小

1.找出可能的最大边长 r 所有面积和的平均 开根号
2.对 r 依次递减
int main() {int n, k, h[100001], w[100001];double area = 0;int r, res = 0;scanf("%d%d", &n, &k);for(int i =0; i < n; i++) {scanf("%d%d", &h[i], &w[i]);area += h[i] * w[i];}r = int(sqrt(area/k));  // 最大边长for (; r >= 1; --r) {for(int i = 0; i < n; ++i)res += (h[i] / r) * (w[i] / r);if (res >= k)break;}cout << r << endl;return 0;
}

6.代码

#include <iostream>
#include <stdio.h>
#include <cmath>using namespace std;int n, k, l = 1, r = 0xffffff;
int h[100001], w[100001];bool check(int a) {int res = 0;for (int j = 0; j < n; j++) {res += (h[j] / a) * (w[j] / a);if (res >= 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]);while (l <= r) {int mid = (l + r) / 2;  // 此次边长bool flag = check(mid);if (flag && !check(mid+1)) {  // 最大边长cout << mid << endl;break;}if (flag)l = mid + 1;elser = mid - 1;}return 0;
}
/* 暴力搜索,从大到小
int main() {int n, k, h[100001], w[100001];double area = 0;int r, res = 0;scanf("%d%d", &n, &k);for(int i =0; i < n; i++) {scanf("%d%d", &h[i], &w[i]);area += h[i] * w[i];}r = int(sqrt(area/k));  // 最大边长for (; r >= 1; --r) {for(int i = 0; i < n; ++i)res += (h[i] / r) * (w[i] / r);if (res >= k)break;}cout << r << endl;return 0;
}
*/

7.参考

  1. 技术图文:蓝桥杯 prev37 分巧克力

【每日一题2019-11-14】-蓝桥杯 prev37 分巧克力相关推荐

  1. 蓝桥杯 prev37 分巧克力

    问题描述 ⼉童节那天有K位⼩朋友到小明家做客.⼩明拿出了珍藏的巧克⼒招待⼩朋友们. ⼩明⼀共有N块巧克⼒,其中第i块是Hi x Wi的⽅格组成的⻓⽅形. 为了公平起⻅,⼩明需要从这 N 块巧克⼒中切出 ...

  2. 每日一题——质因数个数(蓝桥杯2022年第十三届省赛真题)

    如何将一个正整数分解质因数:每日一题--将一个正整数分解质因数_笨小古的博客-CSDN博客 题目描述:给定正整数 n,请问有多少个质数是 n 的约数. 输入格式:输入的第一行包含一个整数 n. 输出格 ...

  3. 2017蓝桥杯之分巧克力

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

  4. 【每日一题】备战冲击蓝桥杯国赛——Python程序设计 | Day03 | 跑步锻炼 | 真题代码解析

  5. 【每日一题】备战冲击蓝桥杯国赛——Python程序设计 | Day13 | 货物摆放 | 真题代码解析

  6. 【每日一题】备战冲击蓝桥杯国赛——Python程序设计 | Day15 | 回路计数 | 真题代码解析

  7. 【每日一题】备战冲击蓝桥杯国赛——Python程序设计 | Day19 | 异或数列 | 真题代码解析

  8. 2017 蓝桥杯初赛 分巧克力

    资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 儿童节那天有K位小朋友到小明家做客.小明拿出了珍藏的巧克力招待小朋友们. 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的 ...

  9. 2020年 第11届 蓝桥杯 Java B组 省赛真题详解及小结【第1场省赛 2020.7.5】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:部分 ...

最新文章

  1. Responsive设计——meta标签
  2. 人脸识别技术及其应用领域
  3. CentOS Linux搭建SVN服务器
  4. 几个常用的文本处理shell 命令:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk
  5. TF之LSTM:利用LSTM算法对mnist手写数字图片数据集(TF函数自带)训练、评估(偶尔100%准确度,交叉熵验证)
  6. 迁移聊天记录到Teams
  7. python编写程序时必须遵守的规则被称为_Python程序设计方案习题与答案
  8. Spring整合SequoiaDB SQL
  9. react 最佳入门_详解React-Todos入门例子
  10. python怎么实现分数形式_python实现将将输入的可约分数化简为不可约分数
  11. App云测试服务对比
  12. 各种无线传输协议汇总(一)- Bluetooth
  13. 几何画板添加背景图片方法
  14. nvidia-smi 查看显卡型号
  15. 股票做空机构-浑水公司
  16. Verilog GPIO 模块设计
  17. 【21考研】计算机/软件等专业调剂信息集合!【完结版】
  18. 微信搜索引擎中索引的分布式演进
  19. 博客园客户端UAP开发随笔 -- 搭建App之间的桥梁
  20. 2019年特大喜讯,用Python爬出来的数据说话,房价真降了

热门文章

  1. css 修改文字基准线_HTML4/HTML5 用CSS或style属性修改 hr 实线 虚线 点线 双实线样式 ... ......
  2. 使用 IndexedDB 进行大数据存储
  3. rx580和gtx1650哪个好
  4. Go 1.19.3 error原理简析
  5. 数据库时间为datetime(date)类型,开发使用String类型的优劣
  6. CISSP第5/8知识点错题集
  7. 网络通信——下载管理器DownloadManager——在通知栏显示下载进度
  8. Koa洋葱圈模型源码浅析(`await next()`为什么能够形成洋葱圈模型?)
  9. mysql 使用java代码进行操作系统_【MySQL 05】使用Java对MySQL进行操作(创建数据库)...
  10. 网络请求未知错误 CLEARTEXT communication to XX not permitted by network security policy 解决方案