51nod--1117-聪明的木匠

算法题-聪明的木匠(C++) 一位老木匠需要将一根长的木棒切成N段。每段的长度分别为L1,L2,......,LN(1 木匠发现,每一次切割花费的体力与该木棒的长度成正比,不妨设切割长度为1的木棒花费1单位体力。例如:若N=3,L1 = 3,L2 = 4,L3 = 5,则木棒原长为12,木匠可以有多种切法,如:先将12切成3+9.,花费12体力,再将9切成4+5,花费9体力,一共花费21体力;还可以先将12切成4+8,花费 阅读详情

一位老木匠需要将一根长的木棒切成N段。每段的长度分别为L1,L2,……,LN(1 <= L1,L2,…,LN <= 1000,且均为整数)个长度单位。我们认为切割时仅在整数点处切且没有木材损失。
木匠发现,每一次切割花费的体力与该木棒的长度成正比,不妨设切割长度为1的木棒花费1单位体力。例如:若N=3,L1 = 3,L2 = 4,L3 = 5,则木棒原长为12,木匠可以有多种切法,如:先将12切成3+9.,花费12体力,再将9切成4+5,花费9体力,一共花费21体力;还可以先将12切成4+8,花费12体力,再将8切成3+5,花费8体力,一共花费20体力。显然,后者比前者更省体力。
那么,木匠至少要花费多少体力才能完成切割任务呢?
Input
第1行:1个整数N(2 <= N <= 50000)
第2 - N + 1行:每行1个整数Li(1 <= Li <= 1000)。
Output
输出最小的体力消耗。
Input示例
3
3
4
5
Output示例
19


import java.io.IOException;
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Scanner;

/*
 * 思路:先选择最小的两个组成一个然后在放进队列在选取两个最小的在相加。直到结束。
 * 
 * */
public class Main {
    public static void main(String[] args) throws NumberFormatException, IOException {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        Comparator<Integer> c = new Comparator<Integer>() {//比较器(其实不用写比较器的,这里只是为了让自己熟悉一下构造器)

            @Override
            public int compare(Integer o1, Integer o2) {

                return o1.compareTo(o2);
            }
        };

        Queue<Integer> queue = new PriorityQueue<>(c);//优先级队列
        for(int i = 0 ; i < n; i++ ){
            queue.add(sc.nextInt());
        }
        int temp1=0 ,temp2=0;
        int sum = 0;
        while(queue.size()>1){
            temp1 = queue.poll();
            temp2 = queue.poll();
            sum += temp1 + temp2;
            queue.add(temp1+temp2);
        }
        System.out.println(sum);

    }

}
51Nod - 1117 聪明的木匠 java实现 51Nod - 1117 聪明的木匠 java实现 问题描述: 一位老木匠需要将一根长的木棒切成N段。每段的长度分别为L1,L2,…,LN(1 <= L1,L2,…,LN <= 1000,且均为整数)个长度单位。我们认为切割时仅在整数点处切且没有木材损失。 木匠发现,每一次切割花费的体力与该木棒的长度成正比,不妨设切割长度为1的木棒花费1单位体力。例如:若N=3,L1 = 3,L2 = 4,L3 = 5,则木棒原长为12,木匠可以有多种切法,如:先将12切成3+9.,花费12体力,再将9切成4 阅读详情

相关推荐

Huffman编码 51nod1117 聪明的木匠

1117 聪明的木匠 题目来源: 河北大学算法艺术协会 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 一位老木匠需要将一根长的木棒切成N段。每段的长度分别为L1,L2,......,LN(1 木匠发现,每一次切割花费的体力与该木棒的长度成正比,不妨设切割长度为1的木棒花费1单位体力。

. 1万+

经典题目——剪绳子

剪绳子 引例:给你一根长度为 n 绳子,请把绳子剪成 m 段(m、n 都是整数,2≤n≤58 并且 m≥2)。每段的绳子的长度记为k[0]、k[1]、……、k[m]。k[0]k[1] … k[m] 可能的最大乘积是多少?例如当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到最大的乘积18。 本题其实是一个数学问题:对于一个整数N,将其分解为m项3、n项2可得到最大乘积。其中...

a1552100455的博客 1001

用STM32F103C8T6和TB6612驱动模块,从零搭建一辆能避障循迹的智能小车(附完整代码)

本文详细介绍了如何使用STM32F103C8T6和TB6612驱动模块从零搭建一辆能避障循迹的智能小车。内容涵盖硬件选型、电路设计、底层驱动配置以及智能行为算法实现,并附有完整代码示例,帮助开发者快速掌握嵌入式开发的核心技术。

weixin_42641741的博客 446

51nod 1117 聪明的木匠(简单贪心)

其实这道题反过来想,就是将其中两个数组合起来,加上它们的和就行了,贪心算法即可,每次选择两个最小值进行合并,最后结果就是答案了。这道题顺便复习了stl的使用。 #include using namespace std; int main() { int m; cin>>m; multisets; while(m--) { long long

dzssw的博客 686

SHAP图全解析:从理论到实践,教你如何读懂和优化模型特征

本文全面解析SHAP图,从博弈论基础到实战应用,指导读者如何解读和利用SHAP值优化机器学习模型。通过详解特征重要性条形图、小提琴图、依赖图及决策图等关键可视化工具,帮助数据科学家精准诊断模型、识别特征交互,并将洞见转化为特征工程与模型调试的实际行动,有效提升模型可解释性与性能。

svm4gardener的博客 189

LabVIEW事件结构避坑指南:为什么你的‘确定按钮’事件有时会失灵?

本文深入探讨了LabVIEW事件结构中'确定按钮'事件失灵的常见原因及解决方案。从事件队列机制到事件类型选择,详细分析了事件丢失的五大原因,包括事件处理耗时过长、事件类型选择不当等,并提供了优化登录界面案例的实用建议。掌握这些技巧可显著提升LabVIEW用户界面的响应可靠性。

weixin_42548888的博客 355

集训

集训第六天 个人感想:今天陈老板讲了二分搜索树、平衡二叉树、二堆根、叶子节点、还有哈希表以及两种解决办法 开放定址法 和 拉链法。我觉得今天要自己慢慢学习的知识太多了,感觉听懂了一半左右剩下的还要自己慢慢理解通过题再多学几遍,因为前面的知识还并没有实现代码那么熟悉或者还没能实现,所以下午的学习主要还是学之前的深搜和广搜,今天发现自己的缺点并不仅仅是不够努力,还有就是容易分散注意力,下午的学习感觉有了新的发现,在我学习一个算法时,我要先看视频看看它的操作示范与思路,觉得可以听一会在本地编译上想一想实现代码的根

m0_52148376的博客 178

脑电数据预处理十四:主成分分析(PCA)用于伪迹去除与降维

本文探讨了主成分分析(PCA)在脑电图(EEG)预处理中的双重应用。针对EEG数据的高维特性和伪迹干扰问题,PCA既可有效去除高振幅伪迹(如眼动、心电等),又能实现数据降维。文章详细解析了PCA的核心原理,包括正交基向量投影和方差最大保留机制,并提供了基于MNE-Python的完整实现方案。通过代码示例展示了PCA在伪迹去除和降维中的具体应用效果,包括功率谱密度和时域波形的可视化对比。虽然ICA在复杂伪迹处理上更具优势,但PCA以其算法简单、计算高效的特点,成为EEG分析流程中不可或缺的基础工具。

qq_32516809的博客 1418

51nod 1117 聪明的木匠 (优先队列_STL)

一位老木匠需要将一根长的木棒切成N段。每段的长度分别为L1,L2,......,LN(1 木匠发现,每一次切割花费的体力与该木棒的长度成正比,不妨设切割长度为1的木棒花费1单位体力。例如:若N=3,L1 = 3,L2 = 4,L3 = 5,则木棒原长为12,木匠可以有多种切法,如:先将12切成3+9.,花费12体力,再将9切成4+5,花费9体力,一共花费21体力;还可以先将12切成4+8,花费

AK_HuangYC的博客 1008

arduino uno spi驱动12864

arduino uno spi驱动12864

yvee的博客 2060

解决用VScode写中文注释,Vivado打开之后是乱码的方法

这样就解决了中文注释乱码的问题,此外如果使用notepad++写verilog代码的话直接在notepad++上面将编码格式改为ANSI格式即可,更加方便快捷,所以此方法仅针对习惯用VScode写Verilog的同学,如果有其他好办法的话欢迎评论区补充。首先,VScode中的中文默认编码格式是UTF-8,然后Vivado的编码格式是vivado 默认的应该是ANSI编码格式,刚开始我先按照网上说明的,将VScode中的编码格式改为GBK格式(点击右下角->点击通过编码保存)。

weixin_50573305的博客 5815

51Nod_1117 聪明的木匠【贪心】

                                             51Nod_1117 聪明的木匠                                          http://www.51nod.com/Challenge/Problem.html#!#problemId=1117     题目 一位老木匠需要将一根长的木棒切成N段。每段的长度...

逐梦者 422

IMX335摄像头原理图设计,已量产

从工程组织上看,IMX335 模组和 IMX415 模组属于同一类产品:核心矛盾不是外设多,而是高速图像链路、电源域和调试接口要同时兼顾。ATK-MCIMX335 这张图的结构也很直接,三路 LDO、本地 24MHz 可选时钟、4-lane MIPI 数据对和一组主板侧标准接口,构成了一张非常典型的量产摄像头子板。

不脱发的程序猿 440

51nod-【1117 聪明的木匠】

1117 聪明的木匠 题目来源: 河北大学算法艺术协会 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 一位老木匠需要将一根长的木棒切成N段。每段的长度分别为L1,L2,......,LN(1 木匠发现,每一次切割花费的体力与该木棒的长度成正比,不妨设切割长度为1的木棒花费1单位体力。

有梦的博客 719

【Unity-UGUI控件全面解析】| Layout自动布局组件详解

UGUI中有个自动布局组件Auto Layout,主要包含下面几个模块(点击可进入官方文档下查看描述): 自动布局 布局元素 (Layout Element) 水平布局组 (Horizontal Layout Group) 垂直布局组 (Vertical Layout Group) 网格布局组 (Grid Layout Group) 内容大小适配器 (Content Size Fitter) 自动布局系统 基于布局元素和布局控制器的概念。一个布局元素是具有矩形变换以及其他可选组件的游戏对象。布局元素对自身

努力前行,总会成为自己心中的那道光 2万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

51Nod - 1117 聪明的木匠

51Nod -1117聪明的木匠 一位老木匠需要将一根长的木棒切成N段。每段的长度分别为L1,L2,......,LN(1 <= L1,L2,…,LN <= 1000,且均为整数)个长度单位。我们认为切割时仅在整数点处切且没有木材损失。 木匠发现,每一次切割花费的体力与该木棒的长度成正比,不妨设切割长度为1的木棒花费1单位体力。例如:若N=3,L1 = 3,L2 = 4...

weixin_30332241的博客 93

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

51Nod 1117 聪明的木匠

聪明的木匠 题目来源: 河北大学算法艺术协会 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 描述 一位老木匠需要将一根长的木棒切成N段。每段的长度分别为L1,L2,......,LN(1 <= L1,L2,…,LN <= 1000,且均为整数)个长度单位。我们认为切割时仅在整数点处切且没有木材损失。 木匠发现,每一次切割花费的...

agang2007的博客 158

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【51Nod - 1117】【聪明的木匠 】

题目:   一位老木匠需要将一根长的木棒切成N段。每段的长度分别为L1,L2,......,LN(1 &lt;= L1,L2,…,LN &lt;= 1000,且均为整数)个长度单位。我们认为切割时仅在整数点处切且没有木材损失。 木匠发现,每一次切割花费的体力与该木棒的长度成正比,不妨设切割长度为1的木棒花费1单位体力。例如:若N=3,L1 = 3,L2 = 4,L3 = 5,则木棒原长为12,...

哇哈哈哈的博客 238

51nod 1117 聪明的木匠(贪心)

1117 聪明的木匠 题目来源: 河北大学算法艺术协会 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 一位老木匠需要将一根长的木棒切成N段。每段的长度分别为L1,L2,......,LN(1 木匠发现,每一次切割花费的体力与该木棒的长度成正比,不妨设切割长度为1的木棒花费1单位体力。

BBHHTT的博客 790

51nod-1117 聪明的木匠

原题链接 1117 聪明的木匠 题目来源: 河北大学算法艺术协会 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 一位老木匠需要将一根长的木棒切成N段。每段的长度分别为L1,L2,......,LN(1 木匠发现,每一次切割花费的体力与该木棒的长度成正比,不妨设切割长度为

L. 429

【51Nod】1117 聪明的木匠

题意一位老木匠需要将一根长的木棒切成N段。每段的长度分别为L1,L2,……,LN(1 <= L1,L2,…,LN <= 1000,且均为整数)个长度单位。我们认为切割时仅在整数点处切且没有木材损失。 木匠发现,每一次切割花费的体力与该木棒的长度成正比,不妨设切割长度为1的木棒花费1单位体力。例如:若N=3,L1 = 3,L2 = 4,L3 = 5,则木棒原长为12,木匠可以有多种切法,如:先将12

JinbaoSite 864

51Nod 1117 - 聪明的木匠(贪心)

1117 聪明的木匠基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题一位老木匠需要将一根长的木棒切成N段。每段的长度分别为L1,L2,......,LN(1 &lt;=L1,L2,…,LN &lt;= 1000,且均为整数)个长度单位。我们认为切割时仅在整数点处切且没有木材损失。木匠发现,每一次切割花费的体力与该木棒的长度成正比,不妨设切割长度为1的木棒花费1单位...

Change the world by program. 605

51NOD 1117 聪明的木匠

来源:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1117 挑战原题吧 大概 每次挑选最小的两个,合起来 #include <bits/stdc++.h> using namespace std; int main () { int n; sc...

YZ930035683的博客 118

51nod 1117聪明的木匠

聪明的木匠 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 一位老木匠需要将一根长的木棒切成N段。每段的长度分别为L1,L2,……,LN(1 &amp;amp;amp;lt;= L1,L2,…,LN &amp;amp;amp;lt;= 1000,且均为整数)个长度单位。我们认为切割时仅在整数点处切且没有木材损失。 木匠发现,每一次切割花费的体力与该木棒的长度成正比,不妨设切割长度为1的木棒花费1单位体...

Anoyer的博客 370

51Nod-1117-聪明的木匠

1117 聪明的木匠 题目来源: 河北大学算法艺术协会 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 一位老木匠需要将一根长的木棒切成N段。每段的长度分别为L1,L2,......,LN(1 木匠发现,每一次切割花费的体力与该木棒的长度成正比,不妨设切割长度为1的木棒花费1单位体力。

随风而行的博客 415
上一篇: java PriorityQueue
下一篇: 十进制转其他进制通用代码
jeffery0628
博客等级 码龄11年 39粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值