分巧克力

  • 1.题目
  • 2.基本思想
  • 3.代码实现

1.题目

儿童节那天有 K 位小朋友到小明家做客。

小明拿出了珍藏的巧克力招待小朋友们。

小明一共有 N 块巧克力,其中第 i 块是 Hi×Wi 的方格组成的长方形。

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

切出的巧克力需要满足:

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

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

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

2.基本思想

整数二分
时间复杂度 O(nlogn)

思路:
首先,巧克力边长肯定是在一个区间内的,是可枚举的。看一下题目数据范围边长 <=1e5 而且题目说了至少能切出 1×1的巧克力,所以答案肯定是在 [1,100000]范围内的。那么我们就可以二分。
当check(mid)满足条件时,也就是分得的巧克力数大于等于k时,那么左边的区间肯定也是满足的,并且mid也是可取的,所以l = mid。
当不满足时,很显然答案肯定在我们分得的区间左边,因为mid已经不满足了,所以我们的r = mid-1

3.代码实现

import java.io.IOException;
import java.util.Scanner;public class _1227分巧克力 {static Scanner sc = new Scanner(System.in);static int w[] = new int[100010];static int h[] = new int[100010];static int n, k;public static void main(String[] args) throws IOException {n = sc.nextInt();k = sc.nextInt();for (int i = 0; i < n; i++) {h[i] = sc.nextInt();w[i] = sc.nextInt();}//二分遍历符合条件的 x(最大边长)int l = 1, r = 100000;//最小1*1while (l < r) {int mid = l + r + 1 >> 1;//判断此时 mid边长 是否符合if (check(mid)) l = mid;else r = mid - 1;}System.out.println(l);}private static boolean check(int mid) {int res = 0;//枚举 n块巧克力 是否够 k 块for (int i = 0; i < n; i++) {// h * w 的巧克力 可以分成边长为 mid 的块数res += (h[i] / mid) * (w[i] / mid);//够分if (res >= k) return true;}return false;}
}

Acwing---1227.分巧克力相关推荐

  1. C++实现 1227. 分巧克力

    C++实现 1227. 分巧克力   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博客,唯一博客更新的地址为:亓官 ...

  2. 蓝桥杯java第八届第九题--分巧克力

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

  3. 2017蓝桥杯省赛---java---B---9(分巧克力)

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

  4. 2017蓝桥杯c语言C组承压计算,蓝桥杯2017Java B组---分巧克力and承压计算

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

  5. 蓝桥杯第八届省赛JAVA真题----分巧克力

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

  6. 题目 1885: 2017 分巧克力

    蓝桥杯2017年第八届真题-分巧克力 - C语言网 做题记录: 第一次(16分钟/78')超时: 通过举例,可以直到长宽  a*b的巧克力,分边长为i的巧克力可以分(a/i)*(b/i)块 思路:ma ...

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

    [每日一题2019-11-14]-蓝桥杯 prev37 分巧克力 文章目录 [每日一题2019-11-14]-蓝桥杯 prev37 分巧克力 1.问题描述 2.输入格式 3.样例输入 4.样例输出 5 ...

  8. 蓝桥杯 分巧克力 python

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

  9. Java实现第八届蓝桥杯分巧克力

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

  10. 分巧克力 【蓝桥杯】

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

最新文章

  1. 52个有用的 Docker 工具
  2. KMP算法的JavaScript实现
  3. java代码优化_java代码之美(11)---java代码的优化
  4. .NET Core开发实战(第15课:选项框架:服务组件集成配置的最佳实践)--学习笔记...
  5. python播放音乐同步歌词_使用Python下载歌词并嵌入歌曲文件中的实现代码
  6. 软件测试测试 python_Python测试简介
  7. C++/C--mmap()详解
  8. wpf treeview调整子菜单间距_完全由C编写,高度可移植,超级牛逼的菜单架构!...
  9. Symfony1.4.11学习笔记(四):数据模型
  10. HDU 4704 Sum (费马小定理)
  11. pscp使用详解 Windows与Linux文件互传工具
  12. 参数估计:矩估计和最大似然估计
  13. SpringBoot中接口跨域问题
  14. ffmpeg h264 h265 视频格式操作
  15. numpy.dot()和x.dot(y)函数介绍和示例
  16. 搭建 WordPress 博客教程(超详细)
  17. 什么是瀑布图_什么是瀑布图以及为什么我需要一个
  18. CPU微指令相关概念
  19. php打开excel文件,PHP读取Excel文件的简单示例
  20. 对面向接口编程的理解

热门文章

  1. 我的世界电脑版java怎么弄scp模组_我的世界scpjs模组
  2. 高通平台power_supply 框架下添加第三方充电IC的驱动方法
  3. 深度学习:自动编码器基础和类型
  4. matlab 用visio编辑_在线运行Matlab, Visio, Office, SPSS...,科研者的福利
  5. 应用程序无法正常启动,提示错误代码0xc000007b怎么办?
  6. vue中绑定style样式的方式
  7. SQL Server 2017下载,安装,打开步骤
  8. sqlserver2017
  9. PTA 游泳池改造 (30 分)
  10. cmd中如何切换到指定盘符的指定文件夹目录