分巧克力
小明一共有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的巧克力。
输出
输出切出的正方形巧克力最大可能的边长。
发布日期:2022-02-08 04:20:48
浏览次数:2
分类:技术文章
本文共 1334 字,大约阅读时间需要 4 分钟。
一些常用知识:
(1)1s时限一般可以满足10^8次的运算。
(2)1个int要占用4B,1个char要占用1B,1个long long 或 double 要占用8B
标题: 分巧克力
儿童节那天有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的巧克力。
输出
输出切出的正方形巧克力最大可能的边长。
#include#include #include using namespace std;const int MAX_N = 1e5 + 5;const double EPS = 1e-8; // 在浮点数运算中,会出现误差,EPS用于修正这些误差long long h[MAX_N], w[MAX_N];int n, k;bool judge(int x) { long long sum = 0; for (int i = 0; i < n; i++) { sum += (h[i] / x) * (w[i] / x); } return sum >= k;}// 以下这段代码被称为整数二分int erfen(int L, int R) { int ans = L; while (L <= R) { int M = (L + R) / 2; if (judge(M)) { ans = M; L = M + 1; } else R = M - 1; } return ans;}int main() { int max_R = 0; long long area = 0; scanf("%d%d", &n, &k); for (int i = 0; i < n; i++) { scanf("%lld%lld", &h[i], &w[i]); area += h[i] * w[i]; max_R = max(max_R, (int)min(h[i], w[i])); } int ans = erfen(2, min(int(sqrt(area / k + EPS) + EPS), max_R)); printf("%d\n", ans); return 0;}
转载地址:https://blog.csdn.net/weixin_38960774/article/details/79413301 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月11日 01时16分31秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
squid 优化指南
2019-04-27
编程方式刷新Squid缓存服务器的五种方法
2019-04-27
centos vnc配置笔记
2019-04-27
Linux服务器网络开发模型
2019-04-27
nginx虚拟目录设置 alias 和 root
2019-04-27
理解http响应头中的Date和Age
2019-04-27
四层和七层负载均衡的区别
2019-04-27
设置Squid Cache_mem大小
2019-04-27
squid日志文件太大,怎样处理?
2019-04-27
让Squid 显示本地时间
2019-04-27
linux mysql 命令 大全
2019-04-27
清除Squid缓存的小工具
2019-04-27
Varnish Cache 3.0.0安装
2019-04-27
深入探讨Varnish缓存命中率
2019-04-27
Linux下文件如果没有权限不能被Apache访问
2019-04-27
Linux内核学习四库全书
2019-04-27
Linux内核模块编程入门
2019-04-27
使用Cacti监控你的网络Cacti的安装
2019-04-27
2011年6月编程语言关注度排行
2019-04-27