牛客NC382 切割木头【中等 二分超找 Java/Go/C++】

news2024/9/28 11:12:48

题目

在这里插入图片描述
题目链接:
https://www.nowcoder.com/practice/707d98cee255448c838c76918a702be0

核心

 二分查找

Java代码

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param a int整型一维数组
     * @param k int整型
     * @return int整型
     */
    public int cutWood (ArrayList<Integer> ll, int k) {
        if (ll == null || ll.size() == 0) return 0;
        int[] a = new int[ll.size()];
        for(int i=0;i<ll.size();i++){
            a[i] = ll.get(i);
        }
        int L = 1; //数据合法的情况下,长度为1的是最多
        int R = 0;
        long total = 0;
        for (int i : a) {
            total += i;
            R = Math.max(R, i);
        }

        if (total < k) return 0;

        while (L < R) {
            int m = L + (R - L + 1) / 2;
            long cur = binarySearch(a, m);
            if (cur < k) {
                R = m - 1;
            } else {
                L = m;
            }
        }

        return L;
    }
    public long binarySearch(int[] arr, int m) {
        long cnt = 0;
        for (int i : arr) {
            cnt += i / m;
        }
        return cnt;
    }
}

Go代码

package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param a int整型一维数组
 * @param k int整型
 * @return int整型
 */
func cutWood(a []int, k int) int {
	if a == nil || len(a) == 0 {
		return 0
	}

	L := 1 //数据合法的情况下,长度为1的时候是能切最多数量的
	R := 0
	total := 0
	for _, t := range a {
		total += t
		if t > R {
			R = t
		}
	}

	if total < k {
		return 0 //数据不合法
	}

	for L < R {
		m := L + (R-L+1)/2
		cur := binarySearch(a, m)

		if cur < k {
			R = m - 1
		} else {
			L = m
		}
	}
	return L
}

func binarySearch(arr []int, m int) int {
	cnt := 0
	for _, t := range arr {
		cnt += t / m
	}
	return cnt
}

C++代码

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param a int整型vector
     * @param k int整型
     * @return int整型
     */
    int cutWood(vector<int>& a, int k) {
        if (a.size() == 0)
            return 0;

        int L = 1; //数据合法的情况下,长度为1能切到最多数量的k【假设k是变动的】
        int R = 0;
        int total = 0;

        for (int i = 0; i < a.size(); i++) {
            int cur = a[i];
            total += cur;
            if (cur > R) {
                R = cur;
            }
        }

        while (L < R) {
            int m = L + (R - L + 1) / 2;
            int cur = binarySearch(a, m);
            if (cur < k) {
                R = m - 1;
            } else {
                L = m;
            }
        }
        return L;
    }

    int binarySearch(vector<int>& arr, int m) {
        int cnt = 0;
        for (int i = 0; i < arr.size(); i++) {
            cnt += arr[i] / m;
        }
        return cnt;
    }
};

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

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

相关文章

泰克示波器电流探头如何抓浪涌电流波形?

泰克示波器是一种常见的电子测量仪器&#xff0c;广泛应用于电子工程、通信工程、医疗设备等领域。它的主要功能是实时显示电信号的波形&#xff0c;从而帮助工程师和技术人员分析和调试电路。而在一些特定的应用场景中&#xff0c;例如电源、电机、电器设备等&#xff0c;我们…

神经网络之防止过拟合

今天我们来看一下神经网络中防止模型过拟合的方法 在机器学习和深度学习中&#xff0c;过拟合是指模型在训练数据上表现得非常好&#xff0c;但在新的、未见过的数据上表现不佳的现象。这是因为模型过于复杂&#xff0c;以至于它学习了训练数据中的噪声和细节&#xff0c;而不…

基于EBAZ4205矿板的图像处理:12图像二值化(阈值可调)

基于EBAZ4205矿板的图像处理&#xff1a;12图像二值化(阈值可调) 先看效果 板卡拿回寝室了&#xff0c;明天晚上再补充实际运行效果 我的项目是可以通过按键调整二值化的阈值的&#xff0c;key1为阈值加1&#xff0c;key2为阈值减1&#xff0c;key3为阈值加10&#xff0c;ke…

vue初始化项目

打开终端输入vue create project-name 选择Manually select features回车&#xff0c;继续选择如下&#xff1a; 如果要使用pina就可以不选vuex&#xff0c;回车&#xff0c;选择如下&#xff1a; 按下图选即可

SX1301 1MHz、2A升压电流模式PWM转换器芯片IC

一般说明 S1301是直流-直流之间的a电流。安装Wμ电路内置0.25Ω功率MOSFET&#xff0c;使此稳压器高功率效率。内部补偿网络还可最大限度地减少多达6个外部元件数量。误差放大器的同相输入端接0.6V精密基准电压&#xff0c;内部具有软启动功能&#xff0c;可以减小浪涌电…

Hikyuu-SYS-趋势双均线交易策略实现

本篇中&#xff0c;我们将通过技术分析流派中经典的“趋势双均线策略”&#xff0c;向大家展现如何 Hikyuu 来测试自己的想法&#xff0c;并最终将它转化为策略&#xff01; 准备工作 下面的代码在 Jupyter Lab 中执行&#xff0c;和直接使用 .py 文件执行的区别主要在于 matp…

C语言--带环链表问题

继续学习 一、判断链表是否带环 141. 环形链表 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;用快慢指针&#xff0c;快指针走两步&#xff0c;慢指针走一步&#xff0c;当慢指针走一半快指针进到环里 当慢指针进环&#xff0c;快指针已经在环中转了一会儿了 | |…

【论文笔记】Training language models to follow instructions with human feedback B部分

Training language models to follow instructions with human feedback B 部分 回顾一下第一代 GPT-1 &#xff1a; 设计思路是 “海量无标记文本进行无监督预训练少量有标签文本有监督微调” 范式&#xff1b;模型架构是基于 Transformer 的叠加解码器&#xff08;掩码自注意…

C语言二叉树代码实现

声明&#xff1a;著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 采用二叉链表作为存储结构&#xff0c;完成二叉树的建立&#xff0c;先序、中序和后序遍历的操作&#xff0c;求所有叶子及结点总数的操作等。 #include <stdio.h> #i…

ctfshow 框架复现

文章目录 web 466web 467web 468web469web 470web 471web 472web 473web 474web 475web 476 web 466 Laravel5.4版本 &#xff0c;提交数据需要base64编码 代码审计学习—Laravel5.4 - 先知社区 (aliyun.com) 用第二条链子 反序列化格式 /admin/序列化串base64<?php na…

牛客NC383 主持人调度(一)【简单 排序 Java/Go/C++】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/e160b104354649b69600803184094adb 思路 直接看代码&#xff0c;不难Java代码 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返…

用python画一个正八边形

1 问题 使用turtle库的turtle.fd()函数和turtle.seth()函数绘制一个边长100的正八边形。 2 方法 1、利用for循环解决如何画出图形中相同的八条边的问题。 2、再利用turtle.fd()函数和turtle.seth()函数画出完整的图形。 代码清单 1 import turtleturtle.pensize(2)d0for i in r…

第77天:WAF 攻防-权限控制代码免杀异或运算变量覆盖混淆加密传参

目录 案例一&#xff1a; 代码-脚本后门免杀变异-覆盖&传参 传参 变量覆盖 案例二&#xff1a;代码-脚本后门免杀变异-异或&加密 加密 异或 案例三&#xff1a;免杀脚本生成代码 php免杀脚本 案例一&#xff1a; 代码-脚本后门免杀变异-覆盖&传参 传参 正…

【C++程序员的自我修炼】string 库中常见用法(二)

制芰荷以为衣兮 集芙蓉以为裳 不吾知其亦已兮 苟余情其信芳 目录 字符串的头部插入insert <1>头部插入一个字符串&#xff1a; <2>头部插入一个字符&#xff1a; <3>迭代器的插入 总结&#xff1a; 字符串的头部删除 erase <1>头部插入删除一个字符&a…

Spring入门及注解开发

1 引言 自定义注解可以用来为代码添加元数据信息,简化配置,提高代码的可读性和可维护性。通过自定义注解,可以实现自定义的业务逻辑、约束条件、配置参数等功能。在Spring中,自定义注解常用于标记组件、配置依赖注入、AOP切面等。 自定义注解可以添加元数据信息,低代码框…

使用sherpa-onnx给文字添加标点符号

上篇文章https://blog.csdn.net/AWNUXCVBN/article/details/138372795 识别出的文字都是没有标点符号的&#xff0c;虽然可以添加整句断行&#xff0c;但总觉得怪怪的…… 于是看了一下&#xff0c;ncnn没有添加标点符号的功能&#xff0c;翻了一下onnx有示例&#xff0c;但没有…

【测试报告】网页聊天室

⭐ 作者&#xff1a;Jwenen &#x1f331; 作者主页&#xff1a;Jwenen的个人主页 &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 测试报告 1. 编写目的2. 项目介绍3. 功能测试用例4. 自动化测试源码 1. 编写目的 本报告为网页聊…

【华为】AC直连二层组网隧道转发实验配置

【华为】AC直连二层组网隧道转发实验配置 实验需求拓扑配置AC数据规划表 AC的配置顺序AC1基本配置(二层通信)AP上线VAP组关联--WLAN业务流量 LSW1AR1STA获取AP的业务流量 配置文档 实验需求 AC组网方式&#xff1a;直连二层组网。 业务数据转发方式&#xff1a;隧道转发。 DHC…

Odoo14修改登录界面,实现炫酷粒子效果

目录 原登录界面 最终效果 实现步骤 插件下载 原登录界面 最终效果 实现步骤 1 odoo创建插件web_login 2 在static目录下编写css和js文件 login.css代码 html, body {position:fixed;top:0px;left:0px;height:100%;width:100%;/*Fallback if gradeints dont work */b…

ASP.NET网上车辆档案管理系统

摘 要 本文采用基于Web的Asp.net技术&#xff0c;并与sql server 2000数据库相结合&#xff0c;研发了一套车辆档案管理系统。该系统扩展性好&#xff0c;易于维护。简化了车辆档案设计流程&#xff0c;去除了冗余信息。汽车销售企业可以通过本系统完成整个销售及售后所有档案…