标题: 分巧克力

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

输入
第一行包含两个整数N和K。(1 <= N, K <= 100000)
以下N行每行包含两个整数Hi和Wi。(1 <= Hi, Wi <= 100000)
输入保证每位小朋友至少能获得一块1x1的巧克力。
输出
输出切出的正方形巧克力最大可能的边长。

样例输入:
2 10
6 5
5 6
样例输出:
2

资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
不要使用package语句。不要使用jdk1.7及以上版本的特性。
主类的名字必须是:Main,否则按无效代码处理。

解析:对于这个题目,我们可能会纠结与如何保证多块巧克力同时能够被切割成指定块数。其实不过是枚举罢了,我们从大到小进行枚举,找到一个最大的分发能够满足指定块数就可以了。下面采用了二分法进行查找合适大小。

import java.util.Scanner;
class Cho {int h;int w;public Cho(int h, int w) {// TODO Auto-generated constructor stubthis.h = h;this.w = w;}
}
public class Main2 {static int n, k;static Cho[] cho;public static void main(String[] args) {Scanner in = new Scanner(System.in);n = in.nextInt();k = in.nextInt();int low = 1;int mid = 0;int high = 100000;cho = new Cho[n];for (int i = 0; i < n; i++) {int a = in.nextInt();int b = in.nextInt();cho[i] = new Cho(a, b);}
//      二分,基本思路为暴力,从大到小能够保证最先出来的结果就是符合要求的最大情况while (low < high -1) {mid = (low + high) /2;if (!judge(mid)) {high = mid;} else {low = mid;}}System.out.println(mid - 1);}private static boolean judge(int l) {// TODO Auto-generated method stubint sum = 0;for (int i = 0; i < n; i++) {sum += (cho[i].h * cho[i].w) / (l * l);if (sum >= k) {return true;}}return false;}
} 

蓝桥杯第八届省赛JAVA真题----分巧克力相关推荐

  1. 蓝桥杯第八届省赛JAVA真题----k倍区间

    标题: k倍区间 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍 ...

  2. 蓝桥杯第八届省赛JAVA真题----油漆面积

    标题:油漆面积 X星球的一批考古机器人正在一片废墟上考古. 该区域的地面坚硬如石.平整如镜. 管理人员为方便,建立了标准的直角坐标系. 每个机器人都各有特长.身怀绝技.它们感兴趣的内容也不相同. 经过 ...

  3. 蓝桥杯第八届省赛JAVA真题----Excel地址

    标题: Excel地址 Excel单元格的地址表示很有趣,它使用字母来表示列号. 比如, A表示第1列, B表示第2列, Z表示第26列, AA表示第27列, AB表示第28列, BA表示第53列, ...

  4. 蓝桥杯第八届省赛JAVA真题----9数算式

    标题:9数算式 观察如下的算式: 9213 x 85674 = 789314562 左边的乘数和被乘数正好用到了1~9的所有数字,每个1次. 而乘积恰好也是用到了1~9的所有数字,并且每个1次. 请你 ...

  5. 蓝桥杯第八届省赛JAVA真题----包子凑数

    标题:包子凑数 小明几乎每天早晨都会在一家包子铺吃早餐.他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子.每种蒸笼都有非常多笼,可以认为是无限笼. 每当有顾客想买X个包子,卖包子的大叔就会 ...

  6. 蓝桥杯第八届省赛JAVA真题----正则问题

    描述:正则问题 考虑一种简单的正则表达式: 只由 x ( ) | 组成的正则表达式. 小明想求出这个正则表达式能接受的最长字符串的长度. 例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字 ...

  7. 蓝桥杯第八届省赛JAVA真题----拉马车

    标题:拉马车 小的时候,你玩过纸牌游戏吗? 有一种叫做"拉马车"的游戏,规则很简单,却很吸引小朋友. 其规则简述如下: 假设参加游戏的小朋友是A和B,游戏开始的时候,他们得到的随机 ...

  8. 蓝桥杯第八届省赛JAVA真题----日期问题

    标题:日期问题 小明正在整理一批历史文献.这些历史文献中出现了很多日期.小明知道这些日期都在1960年1月1日至2059年12月31日.令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的 ...

  9. 蓝桥杯第八届省赛JAVA真题----字母组串

    标题:字母组串 由 A,B,C 这3个字母就可以组成许多串. 比如:"A","AB","ABC","ABA"," ...

最新文章

  1. Bootstrap3.x - 源代码分析
  2. 2个网页跳来跳去_怎么写最优化的网页标题标签(Title Tag)?
  3. Spring的bean管理注解和配置文件混合使用
  4. 类C编译器 C代码实现
  5. java 计时 timeclock_用 java 写一个clock的类,100毫秒的时钟 求代码。。越简单越好。。最好有注释...
  6. java初学者代码练习题
  7. 如何将exe文件在linux下执行,[操作系统]如何在linux centos 环境下运行.exe文件
  8. Java验证码生成工具类(简洁高效)
  9. hibernate的hsql
  10. 程序人生-Hello‘s P2P
  11. nssa和stub_STUB与NSSA区域总结
  12. DPCM之预测误差均方值推导最小二乘法总结
  13. 极速office(Word)怎么删除背景颜色
  14. 线性回归,逻辑回归个人总结
  15. 【Linux】定时任务crontab和at命令详解
  16. 【c语言】求一个3行4列矩阵的外框的元素值之和
  17. 【算法】_004_插入排序
  18. MT6753芯片资料MT6753处理器资料
  19. PHP 接口和抽象类的区别
  20. 【100%通过率】华为机试真题 C语言 实现【过滤组合字符串】【2022.11 Q4新题】

热门文章

  1. ajax搜索思路,jquery创建一个ajax关键词数据搜索实现思路
  2. 基于Java+SpringMvc+vue+element实现疫苗接种管理平台
  3. sqlserver oracle对比,sqlserver和oracle常用函数对比
  4. 宁波大学2020计算机技术复试线,宁波大学关于公布2020年硕士研究生复试分数线的通知...
  5. cli3解决 ie11语法错误 vue_【VUE3.0】它来了,2020年09月18日,Vue.js 3.0 正式发布,但是........
  6. 三菱d700变频器模拟量控制_三菱Q系列PLC,用CCLink控制变频器正反转和多段速
  7. mysql建表指定引擎_请教mysql建表指定data directory 报错
  8. python入门基础篇(三)序列切片,列表、元组推导式
  9. java接口文档生成工具_【分享】接口文档生成工具apipost
  10. android dropbox切换账户,android – 如何获取我的APP_KEY和SECRET_KEY的Dropbox同步?