当前位置: 首页 > news >正文

【算法】Angelic Jelly天使果冻

✨题目链接:

天使果冻


✨题目描述 

Angelic Jelly

有 n 个果冻排成一排。第 i 个果冻的美味度是 ai。
天使非常喜欢吃果冻,但她想把最好吃的果冻留到最后收藏。天使想知道前 x 个果冻中,美味度第二大的果冻有多少美味度?

一共有 q次询问。

注:如果最大的数有两个以上,默认第二大的等于最大的。例如, [2,3,4,2,4]这个序列,第二大的数是4。

✨输入描述:

第一行一个正整数 n 。

第二行 n 个正整数 ai,用空格隔开。

第三行一个正整数 q 。

接下来的 q  行,每行一个正整数 x ,代表一次询问。

数据范围:1≤q≤1e5,1≤ai≤1e9,2≤x≤n≤1e5

✨输出描述:

输出 q 行,每行一个正整数,代表一次询问,输出前x 个果冻中美味度第二大的值。 

✨示例1


📍输入

 5
1 2 5 3 5
4
2
3
4
5

📍输出

 1
2
3
5

📍说明

前2个数,第二大的是1。

前3个数,第二大的是2。

前4个数,第二大的是3。

前5个数,第二大的是5。

✨解题思路

 

  • 每输入一个果冻的美味度就把ai放到小根堆中
  • 从第二个果冻开始:
  1. 保存当前果冻前最大的ai (小根堆顶)
  2. 弹出堆顶元素,此时堆顶为前i个果冻中第二大的
  3. 把满足结果放到 arr[i] 中
  4. 循环结束把堆顶元素填入最后一个位置arr[n]
  • 接收q行的x
  • 打印数组arr[x]中的结果


✨代码
 

#include <iostream>
#include <queue>
#include <vector>
using namespace std;int arr[100000] = { 0 };int main() {int n, q;cin >> n;vector<int> v(n + 1);priority_queue<int> pq;for (int i = 0; i < n; i++) {cin >> v[i];if (i != 0) {pq.push(v[i]);int max = pq.top();pq.pop();arr[i] = pq.top();pq.push(max);} else {pq.push(v[i]);}}pq.pop();arr[n] = pq.top();int x;cin >> q;while (q--) {cin >> x;cout << arr[x - 1] << endl;}return 0;
}


※ 如果文章对你有帮助的话,可以点赞收藏!!谢谢支持

相关文章:

  • Vue从入门到实战Day12~14 - Vue3大事件管理系统
  • 数据挖掘与机器学习——回归分析
  • LeetCode---链表
  • 串口环保212设备 转 profinet IO协议项目案例
  • Diffusion Model, Stable Diffusion, Stable Diffusion XL 详解
  • 前后端分离跨域问题解决方案
  • MagicPose4D:解锁AI驱动的3D模型动作新纪元
  • [C#]winform部署官方yolov10目标检测的onnx模型
  • 【Qt秘籍】[003]-Qt环境变量配置-磨刀不误砍柴工
  • [FlareOn6]Overlong
  • 知识分享:大数据信用花导致的评分不足多久能恢复
  • 领域驱动设计(DDD)学习笔记之:基础理论与概念
  • return _VF.meshgrid(tensors, **kwargs) 的参考解决方法
  • B2124 判断字符串是否为回文
  • 动态规划之买卖股票大集合
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 230. Kth Smallest Element in a BST
  • 30天自制操作系统-2
  • android 一些 utils
  • CEF与代理
  • C学习-枚举(九)
  • DOM的那些事
  • EventListener原理
  • HomeBrew常规使用教程
  • Java Agent 学习笔记
  • Java深入 - 深入理解Java集合
  • Logstash 参考指南(目录)
  • react 代码优化(一) ——事件处理
  • Sass Day-01
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 正则表达式
  • 转载:[译] 内容加速黑科技趣谈
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • #LLM入门|Prompt#3.3_存储_Memory
  • (12)Linux 常见的三种进程状态
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (Oracle)SQL优化技巧(一):分页查询
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (vue)页面文件上传获取:action地址
  • (笔记自用)LeetCode:快乐数
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (三)Kafka离线安装 - ZooKeeper开机自启
  • (未解决)macOS matplotlib 中文是方框
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • *p++,*(p++),*++p,(*p)++区别?
  • ... 是什么 ?... 有什么用处?
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)