【蓝桥备赛】妮妮的月饼工厂——二分查找

题目链接

妮妮的月饼工厂

个人思路

通过二分查找,寻找满足条件的高度,判定标准是当我们选择mid高度时,我们可以切出的月饼个数是否满足题目要求的 K 个。

	static boolean check(long mid) {if (mid == 0) return false;long res= 0;for (int i = 0; i < n; ++i) {res += arr[i] / mid;}return res >= k;}

当然,此处在二分查找的时候,因为我的左边界是从 0 开始的,且是左闭右闭区间,所以在处理的时候需要判断 0 的情况直接返回 false。

参考代码

Java

import java.io.*;public class Main {static PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));static int n;static long k;static long[] arr;static boolean check(long mid) {if (mid == 0) return false;long res= 0;for (int i = 0; i < n; ++i) {res += arr[i] / mid;}return res >= k;}public static void main(String[] args) {Scanner sc = new Scanner();n = sc.nextInt();k = sc.nextLong();arr = new long[n];long l = 0, r = 0;for (int i = 0; i < n; ++i) {arr[i] = sc.nextLong();r= Math.max(arr[i], r);}while (l <= r) {long mid = (r - l) / 2 + l;if (check(mid)) {l = mid + 1;} else {r = mid - 1;}}if (check(r)) {out.println(r);} else {out.println(-1);}out.flush();}
}
// Java 快读
class Scanner {static StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));public int nextInt() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return (int) st.nval;}public long nextLong() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return (long) st.nval;}
}

C/C++

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5 + 3;
int n;
ll k, arr[N];int check(ll mid)
{if(mid <= 0) return 0;ll cnt = 0;for(int i = 1; i <= n; ++i) cnt += arr[i] / mid;return cnt >= k;
}int main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cin >> n >> k;ll l = 0, r = 0;for(int i = 1; i <= n; ++i) cin >> arr[i], r = max(r, arr[i]);while(l <= r){ll mid = (r - l) / 2 + l;if(check(mid)) l = mid + 1;else r = mid - 1;}if(check(r)) cout << r;else cout << -1;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/653751.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯备战——8.DS1302时钟芯片

1.分析原理图 由上图可以看到&#xff0c;芯片的时钟引脚SCK接到了P17,数据输出输入引脚IO接到P23,复位引脚RST接到P13。 2.查阅DS1302芯片手册 具体细节还需自行翻阅手册&#xff0c;我只截出重点部分 总结&#xff1a;数据在上升沿写出&#xff0c;下降沿读入&#xff0c;…

QGIS使用地理配准将3857坐标系转成上海城建坐标

控制点格式 如 mapX mapY sourceX sourceY enable dX dY residual -58653 70641 13452659.39 3746386.025 1 0 0 0 -58653 65641 13452693.09 3740477.283 1 0 0 0 ......保存为.points格式 图层预处理 图层投影为3857坐标系 地理配准 1. 打开图层-地理配准 工具 2. 导入…

import org.apache.commons.lang3.ObjectUtils;下的ObjectUtils工具类

目录 依赖 1.ObjectUtils.compare() 1.1比较Integer类型数据大小 1.2比较int类型数据大小 2.ObjectUtils.CONST()&#xff1a;作用是将value的值赋给result 1.boolean类型 依赖 <!-- lang3 可以使用其中的工具类来处理字符串、日期、数组等等常见的功能--><depe…

基于FX构建大型Golang应用

Uber开源的FX可以帮助Go应用解耦依赖&#xff0c;实现更好的代码复用。原文: How to build large Golang applications using FX 构建复杂的Go应用程序可能会引入很多耦合 Golang是一种流行编程语言&#xff0c;功能强大&#xff0c;但人们还是会发现在处理依赖关系的同时组织大…

sql注入第一关

判断注入点的类型 通常 Sql 注入漏洞分为 2 种类型&#xff1a; 数字型字符型 数字型测试 在参数后面加上单引号,比如: http://xxx/abc.php?id1 如果页面返回错误&#xff0c;则存在 Sql 注入。 原因是无论字符型还是整型都会因为单引号个数不匹配而报错。 如果未报错&…

Go语言中的HTTP代理处理机制

在当今的互联网世界&#xff0c;HTTP代理是一种常见的网络通信方式&#xff0c;用于保护用户的隐私、突破网络限制或提高网络访问速度。在Go语言中&#xff0c;代理处理机制的实现可以为开发者提供强大的网络通信能力。本文将深入探讨Go语言中的HTTP代理处理机制。 首先&#…

使用Windows API实现屏幕截图及服务器传输

功能描述 屏幕截图在许多应用程序和系统中都是一个有用的功能。有时&#xff0c;我们需要捕获当前屏幕的图像&#xff0c;并将其发送到服务器以供进一步处理或存储。下面的C代码演示了如何使用Windows API以及GDI库来完成这一任务。 关键代码分析 屏幕信息获取&#xff1a; …

render函数的基本实现

在学习vue入门时&#xff0c;一直有一个疑惑如何把虚拟dom转换成真实dom的。 现在猜想&#xff0c;假设虚拟dom长这样&#xff0c;表示要渲染的内容。 const testObj {tag: div,children: [{tag: h1, children: 标题},{tag: h1, children: 标题},{tag: h1, children: 标题},{t…

每日一道面试题:Java中序列化与反序列化

写在开头 哈喽大家好&#xff0c;在高铁上码字的感觉是真不爽啊&#xff0c;小桌板又拥挤&#xff0c;旁边的小朋友也比较的吵闹&#xff0c;影响思绪&#xff0c;但这丝毫不影响咱学习的劲头&#xff01;哈哈哈&#xff0c;在这喧哗的车厢中&#xff0c;思考着这样的一个问题…

【笔记】Helm- 5 Chart模板指南-3 Values文件

Values文件 在上一部分我们了解了Helm模板提供的内置对象。其中一个是Values对象。该对象提供了传递到chart的方法&#xff0c;其内容来自多个位置&#xff1a; 1、chart中的values.yaml文件 2、如果是子chart&#xff0c;就是父chart中的values.yaml文件 3、使用-f参数&…

PrimeFaces修改默认加载动画

Background 默认加载动画不够醒目&#xff0c;我们可以在网上下载个好看的gif图&#xff0c;然后修改默认设置&#xff0c;具体步骤如下参考官方地址&#xff1a;https://www.primefaces.org/showcase/ui/ajax/status.xhtml 实现效果如下 xhtml源码 <p:ajaxStatus onstar…

【人工智能】八数码问题的A*搜索算法实现

一、实验要求 熟悉和掌握启发式搜索的定义、估价函数和算法过程&#xff0c;并利用A*算法求解八数码问题&#xff0c;理解求解流程和搜索顺序 二、实验原理 定义h*(n)为状态n到目的状态的最优路径的代价&#xff0c;则当A搜索算法的启发函数h(n)小于等于h* (n)&#xff0c;即满…

使用毫米波雷达传感器的功能安全兼容系统设计指南2(TI文档)

2.3 步骤3&#xff1a;平台选择 平台选择是设计生命周期中最关键的步骤之一。一旦从第二步完成了一个成熟的系统框图&#xff0c;重要的任务就是根据性能需求选择系统模块/子系统。TI广泛的毫米波雷达传感器产品组合可以帮助实现许多性能要求&#xff0c;如远程或中程、角度分辨…

GoogLeNet模型详解

模型介绍 GoogLeNet是谷歌工程师设计的深度神经网络结构&#xff0c;于2014年在ImageNet比赛中取得了冠军。它的设计特点在于既有深度&#xff0c;又在横向上拥有“宽度”&#xff0c;并采用了一种名为Inception的核心子网络结构。这个网络名字中的“GoogLeNet”是对LeNet的致…

Layui + Echarts 5.0

Layui 怎么整合最新版本的 Echarts 5.0&#xff0c;Echarts 4 升级到 5后&#xff0c;有了很大改变&#xff0c;新的配置项4是无法兼容的&#xff0c;所以想要使用新的功能&#xff0c;都需要升级&#xff01; 新建一个echarts.js文件 layui.define(function (exports) {// 这…

【Linux】网络基本配置及网络测试、测试工具

一、网络基本配置 查看网络信息&#xff1a; ifconfigc / ip addr停止网卡eth0&#xff1a; ifconfig eth0 down在本地启动网卡eth0&#xff1a; ifconfig eth0 up改变网卡ip&#xff1a; ifconfig eth0 192.168. .修改子网掩码&#xff1a; ifconfig eth0 &#xff08;I…

2023年算法OOA-CNN-BiLSTM-ATTENTION回归预测(matlab)

OOA-CNN-BiLSTM-Attention鲸鱼算法优化卷积-长短期记忆神经网络结合注意力机制的数据回归预测 Matlab语言。 鱼鹰优化算法&#xff08;Osprey optimization algorithm&#xff0c;OOA&#xff09;由Mohammad Dehghani 和 Pavel Trojovsk于2023年提出&#xff0c;其模拟鱼鹰的捕…

Nodejs前端学习Day5

苦其心志&#xff0c;劳其筋骨 文章目录 前言一、处理路径问题二、path路径模块总结 前言 继续fs 一、处理路径问题 在使用fs模块操作文件时&#xff0c;如果提供的操作路径是以./或…/开头的相对路径时&#xff0c;很容易出现路径动态拼接错误的问题 原因&#xff1a;代码在…

读写注册表、读写文件windows api接口

在Windows操作系统中&#xff0c;对注册表进行读写操作和对文件进行读写操作涉及不同的API接口。这些API接口是Windows API的一部分&#xff0c;通常在C或C语言中使用。以下是一些主要的API接口&#xff1a; 注册表API接口 读取注册表 RegOpenKeyEx: 打开注册表键。RegQueryVa…

USB-C显示器:未来显示技术的革新者

随着科技的不断发展&#xff0c;显示技术也在不断进步&#xff0c;而USB-C显示器作为最新的显示技术&#xff0c;正在引领着显示行业的发展潮流。USB-C显示器具有许多优点&#xff0c;如高速传输、便捷连接、节能环保等&#xff0c;使其成为未来显示技术的革新者。 一、USB-C显…