P1090 合并果子——————multiset

深入MoveIt与OMPL集成开发:从源码编译到自定义规划算法实战 本文详细介绍了如何从源码编译集成MoveIt与OMPL,并实现自定义规划算法的完整流程。通过清理环境、获取源码、解决编译依赖与错误,最终指导开发者创建并集成名为MyRRT的自定义规划算法,从而实现对机器人运动规划栈的深度定制与优化。 阅读详情

P1090 合并果子

题目描述

在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。

每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过 n-1n−1 次合并之后, 就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。

因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为 11 ,并且已知果子的种类 数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。

例如有 33 种果子,数目依次为 1 , 2 , 9 。可以先将 1 、 2 堆合并,新堆数目为 3 ,耗费体力为 3 。接着,将新堆与原先的第三堆合并,又得到新的堆,数目为 12 ,耗费体力为 12 。所以多多总共耗费体力 =3+12=15 。可以证明 15 为最小的体力耗费值。

输入输出格式

输入格式:

共两行。
第一行是一个整数 n ( 1 ≤ n ≤ 10000 ) n(1\leq n\leq 10000) n(1≤n≤10000) ,表示果子的种类数。

第二行包含 n 个整数,用空格分隔,第 i 个整数 a i ( 1 ≤ a i ≤ 20000 ) a_i(1\leq a_i\leq 20000) ai​(1≤ai​≤20000) 是第 i 种果子的数目。

输出格式:

一个整数,也就是最小的体力耗费值。输入数据保证这个值小于 2 31 2^{31} 231 。

输入输出样例

输入样例

3
1 2 9

输出样例

15

说明

对于30%的数据,保证有n \le 1000n≤1000:

对于50%的数据,保证有n \le 5000n≤5000;

对于全部的数据,保证有n \le 10000n≤10000。


这个题也可以用multiset来写出来

#include<bits/stdc++.h>
// #define SUBMIT
using namespace std;
typedef long long ll;
const int MAXN = 1e4+7;
int main()
{

    #ifdef SUBMIT
        freopen("in.txt","r",stdin);
        freopen("out.txt","w",stdout);
        ll _begin_time = clock();
    #endif

    int n;
    cin>>n;
    multiset<int>s;
    for(int i=0;i<n;++i)
    {
        int x;
        cin>>x;
        s.insert(x);
    }
    int ans = 0;
    while(s.size()!=1)
    {
        int a = *s.begin(); s.erase(s.begin());//删除元素C. Powers Of TwoC. Powers Of Two
        int b = *s.begin(); s.erase(s.begin());
        ans += a+b;
        s.insert(a+b);
    }
    cout<<ans<<endl;
    // for(multiset<int>::iterator it = s.begin();it!=s.end();it++)
    //     cout<<*it<<" ";
    // cout<<endl;

    #ifdef SUBMIT
        ll _end_time = clock();
        printf("Time: %lld ms\n",_end_time-_begin_time);
    #endif
    return 0;
}

huggingface使用git上传model或者Dataset到HF,当然也可以上传代码,以及大文件,很哇塞!!! huggingface使用git上传model或者Dataset到HF,当然也可以上传代码,以及大文件,很哇塞!!! 第一次使用时,需要使用设置系统全局的huggingface token,这。点击huggingface首页右上角的头像 → settings → access tokens,创建一个write权限的token,名字可以随便取。 阅读详情

相关推荐

Python与西门子PLC数据交互实战:基于Snap7的跨平台工业通信指南

本文详细介绍了如何使用Python和Snap7库实现与西门子PLC的数据交互。内容涵盖跨平台环境搭建、连接参数配置、数据读写实战及性能优化技巧,为工业自动化、数据采集和智能制造场景提供了一套轻量、灵活且高效的通信解决方案。

vim8coder的博客 283

洛谷P1090——优先队列

优先级最高的先出队。它是队列和排序的完美结合,不仅可以存储数据,还可以将这些数据按照设定的规则进行排序。每次的push和pop操作,优先队列都会动态调整,把优先级最高的元素放在前面。

2301_81608637的博客 421

hcaptcha-challenger:基于本地AI模型自动破解验证码的工程实践

验证码作为区分人类与机器的经典安全机制,其核心原理是通过图像识别、行为分析等交互式挑战来阻挡自动化程序。传统绕过方法依赖第三方打码平台或脚本,存在成本高、稳定性差的问题。随着多模态大语言模型和计算机视觉技术的发展,本地化AI求解成为新的技术方向,它通过集成YOLO、ResNet等模型,在本地完成图像语义理解,实现了高隐私、低成本、可进化的验证码自动化解决方案。这种范式尤其适用于需要大规模稳定处理网页交互的场景,如电商数据采集和社交媒体管理。hcaptcha-challenger项目正是这一理念的工程实践,它

weixin_42587866的博客 1025

贪心算法 洛谷 简单例题题解

一、P1090 合并果子 题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1n−1次合并之后, 就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。 因为还要花大力气把这些果子搬回家,...

Patience 3289

从零实现高精度手势检测:OpenCV+MediaPipe模型移植实战(2)(附c++完整代码)

上篇已经介绍了手掌检测的方法。本章将在手掌检测的基础上,完成手指关节的检测。

qq_37160641的博客 2666

从零构建智能ai语音助手:ESP32s3+Python+大语言模型实战指南

本文详细介绍了基于ESP32S3硬件和Python后端的智能语音助手系统开发指南。系统采用ESP32S3采集语音,通过WebSocket实时传输到Python后端处理,利用大语言模型实现自然语言理解和意图识别,再通过TTS合成语音返回。文章从系统架构、工作流程、技术实现(包括OPUS编码、WebSocket通信、ESP32音频处理)等方面进行了详细讲解,并提供了分阶段学习路线和常见问题解决方案。该项目展示了物联网技术与AI技术的融合应用,相比传统语音系统具有更高的灵活性和智能性,为开发者提供了完整的实现方案

Despacito0o的博客 2630

洛谷P1090讲解

P1090的解答

WangYinxiAlex的博客 1268

SAP OBYC自动过账全解析:从BSX到WRX的会计科目配置指南

本文深入解析SAP OBYC自动过账功能,从BSX到WRX的会计科目配置全流程,涵盖评估分组代码、事务码和评估类等核心概念。通过实战案例展示如何实现库存变动到财务过账的自动化流转,提升企业财务数据的准确性和效率。

weixin_29239279的博客 419

洛谷:P1090 [NOIP2004 提高组] 合并果子

首先题意为“有一组数,需要合并成一个数,每次可以找两个数合成,但需要付出两个数加起来的和的代价,每次累加,到只剩一个数,问最少代价”。首先代价为两数合成之和,那么,一开始要合成较小的,才是代价最少,那么暴力思想非常简单,先sort()排序,合成最小的,然后for()循环,先合成1、2个再sort()排序,如此循环到只有一个,这里建议使用vector动态数组,合成是要舒服些,静态数组每次合成都要好一个循环,外面还有一个,sort一个,时间复杂度差不多是o(n^3)非常暴力,而且码量极大所以不建议。

m0_73438757的博客 1021

获取抖音中x-secsdk-csrf-token的方法

获取抖音中x-secsdk-csrf-token的方法

sh_moranliunian的博客 2018

相机图像质量评估标准全解析:MTF、CA、SNR 与色彩偏差的实战理解

图像质量评估是影像系统开发中的核心环节,它直接影响用户视觉体验与终端产品竞争力。本文基于真实的图像调试工程实践,系统讲解主流图像评价指标,包括调制传递函数(MTF)、色差(CA)、信噪比(SNR)与色彩偏差(DeltaE)等关键标准。结合 Imatest 测试流程与实际样张数据,逐项拆解各项指标在实际图像分析中的意义与优化路径,帮助开发者建立完整、量化、工程化的图像质量评估体系。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 2805

【洛谷贪心算法】P1090合并果子

为了使消耗的体力最小,每次都应该选择当前重量最小的两堆果子进行合并。可以使用优先队列(小根堆)来实现这个过程,优先队列可以自动维护元素的顺序,每次取出堆顶的两个元素(即最小的两个元素)进行合并,然后将合并后的结果重新插入堆中,重复这个过程直到堆中只剩下一个元素。

2301_79279099的博客 775

华为od 面试八股文_Python_02_含答案

华为od 面试八股文_Python_02_含答案

MISAYAONE的博客 4534

洛谷[P1090 合并果子 / [USACO06NOV] Fence Repair G] {贪心} {STL:priority_queue,multiset}

[P1090 合并果子 / [USACO06NOV] Fence Repair G] {贪心} 题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过 n-1次合并之后, 就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。 因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为 1

cmk_chy的博客 402

蓝牙模块HM-10手册

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

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

洛谷 P1090 & multiset运用

题目链接这道题很古老了(NOIP2004),各种做法都很多,很多题解用的是priority_queue优先队列,但优先队列的维护机制有点反人类,其实有一种很简单的做法——用c++的STL multiset。

shadow_Mas的博客 1061

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

P1090 合并果子 贪心

目录 题目 题意 为什么不是区间DP? 选择贪心 代码 题目 题意 每次合并的体力消耗是两堆果子的重量之和。求消耗的最小体力 为什么不是区间DP? 乍一看,,这不我之前刷的区间DP吗???于是复习了一下,赶紧交了。 于是MLE........ 数据量在1e4,空间只给了128MB。区间DP要开二维数组【1e4】【1e4】,再乘上int的8个字节。这就很...

117瓶果粒橙 367

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G

这题采用贪心思想,找到最小的两种果子进行合并,不断重复,直至只剩下一种果子。但这种方法效率比较低,两层for循环,所以比较慢。

2401_82757880的博客 507

P1090 合并果子

1.堆排序 (1)手写最小堆 (2) multiset multiset包含在stl库中的<set>头文件中,运用这个头文件就可以获得堆的效果,由于set是不会有重复单元的,而multiset可以有重复的元素,能够时刻保持集合中的元素是有序的,这样子就更加符合题意 #include <iostream> #include <algorithm> #include <cstring> #include <set> #include &l..

qq12323qweeqwe的博客 224

[STL] [洛谷] P1090 合并果子

  朴素算法 遍历实现小根堆 #include &lt;iostream&gt; #include &lt;algorithm&gt; using namespace std; int arr[11000]; int main() { int N; cin&gt;&gt;N; for(int i = 0; i &lt; N; i++) cin&gt;&gt;arr[...

Zeolim的博客 487

stl set

P2234 [HNOI2002]营业额统计 #include <bits/stdc++.h> using namespace std; int n, x, ans; set<int> s; set<int>::iterator iter, before; int main() { scanf("%d", &n); scanf("%d", &x); s.insert(x); ans+=x; for(int i=2; i<=n; ++i)

ypeijasd的专栏 617

C++ STL 竞赛常用容器详解

本文详细介绍了C++ STL中5种竞赛常用容器的核心用法和应用场景:1) queue用于BFS和FIFO操作;2) priority_queue实现堆结构用于贪心算法;3) stack处理LIFO问题和单调栈;4) set维护有序唯一元素;5) multiset处理可重复有序数据。每种容器均配有典型应用示例(如Dijkstra算法、单调栈求下一个更大元素)和3-5道经典题目(含LeetCode和洛谷链接),涵盖时间复杂度分析和使用注意事项。这些容器是算法竞赛中解决图论、贪心、单调性等问题的利器。

2401_88089822的博客 1308

学习笔记:treap

最近在学一种数据结构:treap,这意味着我再也不用调用stl库的multiset怕常数太大超时了(当然,有的时候编程时间不够还是用stl库好一点)。 由于关于treap的详细而优秀的论文已经数不胜数,基本的操作就不说了。只是讲讲怎么编treap的问题。Treap我用三种方法各编了一次:不用指针,用指针但静态分配内存,指针加动态分配内存。这里讲一下前两种方法,第三种方法由于时间要比第二种方法慢一

KsCla 582

洛谷P1090 [NOIP 2004 提高组] 合并果子 详解

题目其实本意是要我们找到最小的n-1个数,相加之后再加上总共的数字,也即是若有3个数,找最小的两个相加,此时相当于将最小的两个移动了,之后其和再与最后一个数相加,此时相当于将此所有数都移动,也即符合题意。memset初始化:第二个参数里面若填127,这个数字,则会将数组里面的每个值初始化为接近int类型上限的正数,若为128,则初始化为接近int下限的负数。我认为你可能最大不理解的地方是为啥ans就是最终的结果,但是你要从整体上去看,不要关注于ans,此题解法我用的是哈夫曼编码。

2501_90651890的博客 365

题解-合并果子(优先队列)

题目链接: 洛谷 题目描述: 给定n个叶结点,每个结点有一个权值W[i],将它们中两个、两个合并为树,假设每个结点从根到它的距离是D[i],使得最终∑(wi * di)最小。 题解: Part 1 合并果子 这道题有很多方法能做,我一开始竟然脑抽用了个双向队列??? 然后用sort排序,果然T了 然而玄学的是,加了O2以后… 好吧进入正题 这题的做法很简单,就是经典的Huffman树,即每次选...

WjNaG的博客 509

合并果子(优先队列 +或者+哈夫曼)

合并果子 Time Limit:1 SecMemory Limit:128 MBSubmit:312Solved:113[Submit][Status][Web Board] Description 现在有n堆果子,第i堆有ai个果子。现在要把这些果子合并成一堆,每次合并的代价是两堆果子的总果子数。求合并所有果子的最小代价。 Input 第一...

weixin_30677073的博客 698

洛谷——P1090 合并果子

https://www.luogu.com.cn/problem/P1090 题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1n−1次合并之后, 就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体...

九久的博客 1098
上一篇: Codeforces 1095C. Powers Of Two——————multiset
下一篇: P1031 均分纸牌——————贪心
陶鸿杰
博客等级 码龄9年 93粉丝 298原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值