单调队列优化

鼠扑  金牌会员 | 2022-8-12 06:05:17 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 918|帖子 918|积分 2754

dp 单调队列优化

T1 P6033 [NOIP2004 提高组] 合并果子 加强版

题目描述:

给定 \(n\) 个数,每次可以将两个数合并并获得为两数和的分数,求合并到只剩一个数时的最小总分数.
\(1 \le n \le 10^7 \quad 1 \le a_i \le 10^5\)
思路:

新知识1 : 双端队列 :
  1. deque<int>q;
复制代码
速度更快,支持双端操作,支持使用类似于数组的方式 \((q[k])\) 访问.
常用函数:
  1. //入队
  2. q.push_back(k);
  3. q.push_front(k);
  4. q.emplace_back(k);//速度更快,仅限C++14使用
  5. q.emplace_front(k);//速度更快,仅限C++14使用
  6. //出队
  7. q.pop_front();
  8. q.pop_back();
  9. //调用
  10. q.front();
  11. q.back();
  12. q[k];
  13. //数据
  14. q.empty();
  15. q.size();
复制代码
新知识2 : 双端队列的迭代器----读取队列中的所有数据 :

[code]//读取队列中的所有数据for(auto i:q) cout
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

鼠扑

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表