蓝桥杯第八届省赛JAVA真题----分巧克力
标题: 分巧克力
儿童节那天有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真题----分巧克力相关推荐
- 蓝桥杯第八届省赛JAVA真题----k倍区间
标题: k倍区间 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍 ...
- 蓝桥杯第八届省赛JAVA真题----油漆面积
标题:油漆面积 X星球的一批考古机器人正在一片废墟上考古. 该区域的地面坚硬如石.平整如镜. 管理人员为方便,建立了标准的直角坐标系. 每个机器人都各有特长.身怀绝技.它们感兴趣的内容也不相同. 经过 ...
- 蓝桥杯第八届省赛JAVA真题----Excel地址
标题: Excel地址 Excel单元格的地址表示很有趣,它使用字母来表示列号. 比如, A表示第1列, B表示第2列, Z表示第26列, AA表示第27列, AB表示第28列, BA表示第53列, ...
- 蓝桥杯第八届省赛JAVA真题----9数算式
标题:9数算式 观察如下的算式: 9213 x 85674 = 789314562 左边的乘数和被乘数正好用到了1~9的所有数字,每个1次. 而乘积恰好也是用到了1~9的所有数字,并且每个1次. 请你 ...
- 蓝桥杯第八届省赛JAVA真题----包子凑数
标题:包子凑数 小明几乎每天早晨都会在一家包子铺吃早餐.他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子.每种蒸笼都有非常多笼,可以认为是无限笼. 每当有顾客想买X个包子,卖包子的大叔就会 ...
- 蓝桥杯第八届省赛JAVA真题----正则问题
描述:正则问题 考虑一种简单的正则表达式: 只由 x ( ) | 组成的正则表达式. 小明想求出这个正则表达式能接受的最长字符串的长度. 例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字 ...
- 蓝桥杯第八届省赛JAVA真题----拉马车
标题:拉马车 小的时候,你玩过纸牌游戏吗? 有一种叫做"拉马车"的游戏,规则很简单,却很吸引小朋友. 其规则简述如下: 假设参加游戏的小朋友是A和B,游戏开始的时候,他们得到的随机 ...
- 蓝桥杯第八届省赛JAVA真题----日期问题
标题:日期问题 小明正在整理一批历史文献.这些历史文献中出现了很多日期.小明知道这些日期都在1960年1月1日至2059年12月31日.令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的 ...
- 蓝桥杯第八届省赛JAVA真题----字母组串
标题:字母组串 由 A,B,C 这3个字母就可以组成许多串. 比如:"A","AB","ABC","ABA"," ...
最新文章
- Bootstrap3.x - 源代码分析
- 2个网页跳来跳去_怎么写最优化的网页标题标签(Title Tag)?
- Spring的bean管理注解和配置文件混合使用
- 类C编译器 C代码实现
- java 计时 timeclock_用 java 写一个clock的类,100毫秒的时钟 求代码。。越简单越好。。最好有注释...
- java初学者代码练习题
- 如何将exe文件在linux下执行,[操作系统]如何在linux centos 环境下运行.exe文件
- Java验证码生成工具类(简洁高效)
- hibernate的hsql
- 程序人生-Hello‘s P2P
- nssa和stub_STUB与NSSA区域总结
- DPCM之预测误差均方值推导最小二乘法总结
- 极速office(Word)怎么删除背景颜色
- 线性回归,逻辑回归个人总结
- 【Linux】定时任务crontab和at命令详解
- 【c语言】求一个3行4列矩阵的外框的元素值之和
- 【算法】_004_插入排序
- MT6753芯片资料MT6753处理器资料
- PHP 接口和抽象类的区别
- 【100%通过率】华为机试真题 C语言 实现【过滤组合字符串】【2022.11 Q4新题】
热门文章
- ajax搜索思路,jquery创建一个ajax关键词数据搜索实现思路
- 基于Java+SpringMvc+vue+element实现疫苗接种管理平台
- sqlserver oracle对比,sqlserver和oracle常用函数对比
- 宁波大学2020计算机技术复试线,宁波大学关于公布2020年硕士研究生复试分数线的通知...
- cli3解决 ie11语法错误 vue_【VUE3.0】它来了,2020年09月18日,Vue.js 3.0 正式发布,但是........
- 三菱d700变频器模拟量控制_三菱Q系列PLC,用CCLink控制变频器正反转和多段速
- mysql建表指定引擎_请教mysql建表指定data directory 报错
- python入门基础篇(三)序列切片,列表、元组推导式
- java接口文档生成工具_【分享】接口文档生成工具apipost
- android dropbox切换账户,android – 如何获取我的APP_KEY和SECRET_KEY的Dropbox同步?