首页 > 其他分享 >【堆】【优先队列】[NOIP2004]合并果子

【堆】【优先队列】[NOIP2004]合并果子

时间:2024-10-09 12:01:17浏览次数:1  
标签:NOIP2004 果子 队列 pop int second total

https://ac.nowcoder.com/acm/contest/22669/I

堆的用法

Type: 队列中存储元素的类型。例如 int,double,pair<int, int> 等。
Container: 底层存储数据的容器类型,默认为 vector,但可以换成 deque 或其他容器。
Compare: 比较函数,用于决定优先级顺序。默认是 less,表示最大堆。如果使用 greater,则是最小堆.

#include<bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;
    priority_queue<int, vector<int>, greater<int>> q;
    for(int i=0;i<n;i++) {
        int t;
        scanf("%d", &t);
        q.push(t);
    }
    long long ans = 0;
    while(q.size() > 1) {
        int first = q.top();
        q.pop();
        int second = q.top();
        q.pop();
        long long total = first + second;
        ans += total;
        q.push(total);
    }
    cout << ans;
    return 0;
}

标签:NOIP2004,果子,队列,pop,int,second,total
From: https://www.cnblogs.com/peterzh/p/18453926

相关文章

  • 单调栈/单调队列
    1.单调栈给定一个长度为\(n\)的数列\(a\),对每个数字求出其右/左边第一个值大于等于它的数字的位置。考虑从左到右扫整个序列,维护一个栈,里面存放可能成为答案的数字,当遍历到一个新的数\(a_i\)的时候,可以发现栈中\(\leqa_i\)的数就再也不可能成为答案了,那就把它们弹掉,......
  • 优先级队列 ( PriorityQueue )
    文章目录前言一、优先级队列1.1、概念二、优先级队列的模拟实现2.1、堆的概念2.2、堆的存储方式 2.3、堆的创建2.4、堆的插入与删除三、常用接口介绍3.1、Top-k问题3.2、使用PriorityQueue创建大小堆,解决TOPK问题前言        前几篇我们讲解过队列,其是一种先......
  • 单调栈 & 单调队列
    单调栈&单调队列单调栈引入单调栈是什么?顾名思义,单调栈即满足单调性的栈结构,与单调队列相比,其只在一端进行进出。过程插入将一个元素插入单调栈时,为维护栈的单调性,需要在保证将该元素插入到栈顶后整个栈满足单调性,并且使弹出的元素最少伪代码insertxwhile!sta.empty(......
  • 数据结构——栈和队列
    数据结构——栈和队列文章目录数据结构——栈和队列一、栈1.概念2.结构这里我们选择数组作为栈的底层结构。3.栈的实现3.1初始化3.2销毁3.3入数据3.4出数据3.5取栈顶元素3.6获取栈中有效元素个数4.完整代码4.1.Stack.h4.2.Stack.c4.3.test.c二、队列1.概念2.结构这......
  • 消息队列面试01
    基础知识特点:(1)服务解耦:服务之间通过消息中介(如RabbitMQ、Kafka)进行通信,减少直接依赖。(2)异步处理:提高当前请求速度,代价是系统调用的降速,可能带来业务不一致。(3)削峰(流量控制):消息产生速度>消息消费速度(先把请求存起来)(4)增强系统可靠性:     I.MQ给consumerAC......
  • 代码随想录算法训练营 | 134. 加油站,135. 分发糖果,860.柠檬水找零,406.根据身高重建队
    134.加油站题目链接:134.加油站文档讲解︰代码随想录(programmercarl.com)视频讲解︰加油站日期:2024-10-04想法:1.总汽油大于等于消耗一定能跑完,2.当前剩余汽油小于0了,只能从下一站开始重新计算Java代码如下:classSolution{publicintcanCompleteCircuit(int[]gas,int......
  • [消息队列]kafka高性能/高吞吐量
    Kafka每秒可以处理一百万条以上消息,吞吐量达到每秒百万级。那么Kafka为什么那么高的吞吐量呢?简单来说有以下几点原因:页缓存技术Kafka是基于操作系统的页缓存来实现写入的。操作系统本身有一层缓存,叫做pagecache,是在内存里的缓存,我们也可以称之为oscache,意思就是操作系统自己......
  • python3 队列的使用
    在leetcode如下题目中使用队列637.二叉树的层平均值:#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolutio......
  • 单调队列优化 DP
    单调队列可以\(O(n)\)求出子区间的最值,且顺序上要求区间的左端点和右端点单调不降。引入P1886滑动窗口/【模板】单调队列定义一个队列\(q\),我们让\(q\)中的元素满足单调不降。因此当\(x\)入队时,从前往后让不在当前范围的元素出队,从后往前将\(<x\)的元素全部出队,然......
  • 队列实现
    1、数组实现队列#include<stdio.h>#include<stdlib.h>#include<conio.h>#defineMAX10 /*定义队列的大小*/intmain(){ intfront,rear,val,queue[MAX]={0}; charchoice; front=rear=-1; while(rear<MAX-1&&choice!='e') { ......