资源限制
  时间限制:1.0s 内存限制:256.0MB


问题描述
  儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。
  小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。
  
  为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足:
  
  1. 形状是正方形,边长是整数
  2. 大小相同
  
  例如一块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
  请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

注意:
  main函数需要返回0;
  只使用ANSI C/ANSI C++ 标准;
  不要调用依赖于编译环境或操作系统的特殊函数。
  所有依赖的函数必须明确地在源文件中 #include <???>
  不能通过工程设置而省略常用头文件。
  提交程序时,注意选择所期望的语言类型和编译器类型。


大致思路
  
  枚举。直接用每一块的面积 / 每一次可以分出的块数。中途用二分查找维护块数并更新区间,可以节约些时间。(其实似乎不用二分也能过,但是有优化总归是靠谱的)
  
  一上来我的思路其实是找到全部巧克力的最小边长,然后从这个最小边长开始,用每块巧克力的两个边分别 / 这个最小边长并再乘起来计数,一旦计数器越界(大于等于K)即找到,否则边长自减。
  这样做有一个问题:实际上有些边长很小的巧克力它完全可以派不上任何用场好不好!而且这个方法的时间复杂度貌似并没有二分低。
  
代码

#include<iostream>
using namespace std;int H[100005],W[100005];int main()
{int N,K;cin>>N>>K;for(int i=0;i<N;i++)cin>>H[i]>>W[i];//核心:二分法查找结果int l=0,r=100001;while(l<r-1){int cnt=0;bool flag=false;int m=(l+r)>>1;//每次判可分为的块的个数是否超过K,一旦超过即可更新一次左or右区间for(int i=0;i<N;i++){cnt+=((H[i]/m)*(W[i]/m));if(cnt>=K){flag=true;break;}}if(flag)l=m;elser=m;}//l为最终要找的结果cout<<l;return 0;
}

转载并参考自:https://blog.csdn.net/qq_36761831/article/details/79597873

2017 蓝桥杯初赛 分巧克力相关推荐

  1. 2017蓝桥杯之分巧克力

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

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

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

  3. 蓝桥杯 prev37 分巧克力

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

  4. 蓝桥杯 初赛题目 高斯日记

    蓝桥杯 初赛题目 高斯日记 题目描述: 大数学家高斯有个好习惯:无论如何都要记日记. 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期, ...

  5. 2017蓝桥杯java B组纸牌三角形

    2017蓝桥杯java B组纸牌三角形 1.标题:纸牌三角形 A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算).要求每个边的和相等. 下图就是一种排法 A 9 6 4 8 ...

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

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

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

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

  8. 2017蓝桥杯省赛C++B组真题与题解

    A:购物单 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦 ...

  9. 2017蓝桥杯等差素数(C++B组)

    题目 :                                            等差素数列 2,3,5,7,11,13,....是素数序列. 类似:7,37,67,97,127,157 ...

最新文章

  1. DTrace memory leak 内存泄露
  2. Android判断应用是否拥有某种权限
  3. vscode debug c++与opencv程序
  4. c#中判断对象为空的几种方式(字符串等)
  5. POJ 2762 Going from u to v or from v to u? (判断单连通)
  6. 2-算法 矩阵 数组类
  7. 这个“忽悠”马云10亿的男人,还了阿里巴巴5000亿
  8. switch_case,,||,条件操作符和逗号操作符,循环语句
  9. 游戏修改器(一)瞬移
  10. FreeRTOS(教程非常详细)
  11. 深度学习数据增强(data_augmentation):Keras ImageDataGenerator
  12. aspen压缩因子_利用aspen plus进行物性参数的估算讲解
  13. 腾讯云CDN2023年1月5日起,将按用户访问的 HTTPS 请求数次数单独计费,对我有影响吗?
  14. 1、 输入长方形的长和宽,编程求该长方形的周长和面积
  15. Python自动生成数据日报
  16. Deepin系统下载安装LibreOffice6.4.1
  17. “关爱你我他,温暖千万家”——爱心温暖事实孤儿心田
  18. linux df-h命令详细,df命令_Linux df 命令用法详解:显示磁盘的相关信息
  19. 小米、华为、苹果、智汀智能家居能整体联动吗?
  20. alembic.util.exc.CommandError: Can't locate revision identified by 'd5ef4da461a1'

热门文章

  1. bl小说里面有个机器人管家_有机器人管家也别扔掉烫衣板
  2. android so文件不混淆_Android NDK混淆
  3. jre-7u9-windows|jre-7u9-windows(java虚拟机) 32位/64位下载 ug nx专用
  4. 解决KindEditor无法安装flash插件实现图片批量上传
  5. 2022thusc游记
  6. 赤金烈焰显示与服务器断开,赤金烈焰单职业迷失版
  7. seo外链怎么发才能快速提升收录?
  8. C语言中7是一个字符吗,c语言中%7.2f表示什么
  9. 图解通信原理与案例分析-4:“烽火连三月“看烽火通信背后的通信原理
  10. [C#基础] 10 反射的实现原理