【每日一题2019-11-14】-蓝桥杯 prev37 分巧克力
【每日一题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 块巧克力分给小朋友们,切出的巧克力需要满足
- 形状是正方形,边长是整数
- 大小相同
例如:一块 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.参考
- 技术图文:蓝桥杯 prev37 分巧克力
【每日一题2019-11-14】-蓝桥杯 prev37 分巧克力相关推荐
- 蓝桥杯 prev37 分巧克力
问题描述 ⼉童节那天有K位⼩朋友到小明家做客.⼩明拿出了珍藏的巧克⼒招待⼩朋友们. ⼩明⼀共有N块巧克⼒,其中第i块是Hi x Wi的⽅格组成的⻓⽅形. 为了公平起⻅,⼩明需要从这 N 块巧克⼒中切出 ...
- 每日一题——质因数个数(蓝桥杯2022年第十三届省赛真题)
如何将一个正整数分解质因数:每日一题--将一个正整数分解质因数_笨小古的博客-CSDN博客 题目描述:给定正整数 n,请问有多少个质数是 n 的约数. 输入格式:输入的第一行包含一个整数 n. 输出格 ...
- 2017蓝桥杯之分巧克力
分巧克力 儿童节那天有K位小朋友到小明家做客.小明拿出了珍藏的巧克力招待小朋友们. 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形. 为了公平起见,小明需要从这 N 块巧克力中切出 ...
- 【每日一题】备战冲击蓝桥杯国赛——Python程序设计 | Day03 | 跑步锻炼 | 真题代码解析
- 【每日一题】备战冲击蓝桥杯国赛——Python程序设计 | Day13 | 货物摆放 | 真题代码解析
- 【每日一题】备战冲击蓝桥杯国赛——Python程序设计 | Day15 | 回路计数 | 真题代码解析
- 【每日一题】备战冲击蓝桥杯国赛——Python程序设计 | Day19 | 异或数列 | 真题代码解析
- 2017 蓝桥杯初赛 分巧克力
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 儿童节那天有K位小朋友到小明家做客.小明拿出了珍藏的巧克力招待小朋友们. 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的 ...
- 2020年 第11届 蓝桥杯 Java B组 省赛真题详解及小结【第1场省赛 2020.7.5】
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:部分 ...
最新文章
- Responsive设计——meta标签
- 人脸识别技术及其应用领域
- CentOS Linux搭建SVN服务器
- 几个常用的文本处理shell 命令:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk
- TF之LSTM:利用LSTM算法对mnist手写数字图片数据集(TF函数自带)训练、评估(偶尔100%准确度,交叉熵验证)
- 迁移聊天记录到Teams
- python编写程序时必须遵守的规则被称为_Python程序设计方案习题与答案
- Spring整合SequoiaDB SQL
- react 最佳入门_详解React-Todos入门例子
- python怎么实现分数形式_python实现将将输入的可约分数化简为不可约分数
- App云测试服务对比
- 各种无线传输协议汇总(一)- Bluetooth
- 几何画板添加背景图片方法
- nvidia-smi 查看显卡型号
- 股票做空机构-浑水公司
- Verilog GPIO 模块设计
- 【21考研】计算机/软件等专业调剂信息集合!【完结版】
- 微信搜索引擎中索引的分布式演进
- 博客园客户端UAP开发随笔 -- 搭建App之间的桥梁
- 2019年特大喜讯,用Python爬出来的数据说话,房价真降了
热门文章
- css 修改文字基准线_HTML4/HTML5 用CSS或style属性修改 hr 实线 虚线 点线 双实线样式 ... ......
- 使用 IndexedDB 进行大数据存储
- rx580和gtx1650哪个好
- Go 1.19.3 error原理简析
- 数据库时间为datetime(date)类型,开发使用String类型的优劣
- CISSP第5/8知识点错题集
- 网络通信——下载管理器DownloadManager——在通知栏显示下载进度
- Koa洋葱圈模型源码浅析(`await next()`为什么能够形成洋葱圈模型?)
- mysql 使用java代码进行操作系统_【MySQL 05】使用Java对MySQL进行操作(创建数据库)...
- 网络请求未知错误 CLEARTEXT communication to XX not permitted by network security policy 解决方案