题目大意:


分析:

设dpidp_idpi​表示分割了前i个,最大能得到的价值
初值:dpi=f(mini=1iai)dp_{i}=f(min_{i=1}^{i}a_i)dpi​=f(mini=1i​ai​)
转移就是dpi=dpj+f(mini=j+1iaj)dp_{i}=dp_{j}+f(min_{i=j+1}^{i}a_j)dpi​=dpj​+f(mini=j+1i​aj​)
然后用单调栈维护即可

代码:

#include <iostream>
#include <cstdio>
#include <cmath>
#include <queue>
#include <cstring>
#include <algorithm>#define rep(i, st, ed) for (int i = st; i <= ed; i++)
#define rwp(i, ed, st) for (int i = ed; i >= st; i--)#define N 200005using namespace std;typedef long long ll;ll cmin[N], dp[N], a[N], h[N], A, B, C, D, minnum = a[1];
int n, cnt;ll Calc(ll x) {return A * x * x * x + B * x * x + C * x + D;
}int main() {freopen("min.in", "r", stdin);freopen("min.out", "w", stdout);scanf("%d %lld %lld %lld %lld", &n, &A, &B, &C, &D);rep(i, 1, n) scanf("%lld", &a[i]);cmin[++cnt] = a[1]; h[cnt] = 0;rep(i, 1, n) {dp[i] = Calc(minnum);rep(j, 1, cnt) dp[i] = max(dp[i], h[j] + Calc(cmin[j])); if (i == n) break;ll hmax = dp[i];while (cnt >= 1 && cmin[cnt] >= a[i + 1]) hmax = max(hmax, h[cnt]), cnt--;cmin[++cnt] = a[i + 1], h[cnt] = hmax;minnum = min(minnum, a[i + 1]);}printf("%lld\n", dp[n]);return 0;
}

Jzoj P6305 最小值___单调栈优化dp相关推荐

  1. CF1131 G. Most Dangerous Shark (单调栈优化dp)

    文章目录 problem solution code problem solution dpi:dp_i:dpi​: 前iii个多米诺骨牌全都倒下的最小花费 li,ril_i,r_ili​,ri​分别 ...

  2. CF1131 G. Most Dangerous Shark(DP+单调栈优化)

    文章目录 problem solution code problem solution dpi:dp_i:dpi​: 前iii个多米诺骨牌全都倒下的最小花费 li,ril_i,r_ili​,ri​分别 ...

  3. 单调队列以及单调队列优化DP

    单调队列定义: 其实单调队列就是一种队列内的元素有单调性的队列,因为其单调性所以经常会被用来维护区间最值或者降低DP的维数已达到降维来减少空间及时间的目的. 单调队列的一般应用: 1.维护区间最值 2 ...

  4. AcWing 1089 烽火传递 题解(动态规划—DP—单调队列优化DP)

    AcWing 1089 烽火传递 单调队列优化DP,思路比较简单,维护一个保持元素单调递增的单调队列,队首就是第i座烽火台能接收到的,代价最小的方案,加上第i座烽火台的代价就是这座烽火台的最小值 #i ...

  5. 【单调队列优化dp】jzoj4883灵知的太阳信仰 纪中集训提高B组

    [NOIP2016提高A组集训第12场11.10]灵知的太阳信仰 (File IO): input:array.in output:array.out Time Limits: 1000 ms Mem ...

  6. 『单调队列优化DP』[POI2014]ZAL-Freight

    Problem\mathrm{Problem}Problem Upper Bytown和Lower Bytown的火车站通过一条轨道铁路连接. 沿任何一个方向在它们之间行驶都需要s分钟. 但是,离开车 ...

  7. 2018.09.06 烽火传递(单调队列优化dp)

    描述 烽火台是重要的军事防御设施,一般建在交通要道或险要处.一旦有军情发生,则白天用浓烟,晚上有火光传递军情. 在某两个城市之间有 n 座烽火台,每个烽火台发出信号都有一定的代价.为了使情报准确传递, ...

  8. 算法笔记--单调队列优化dp

    单调队列:队列中元素单调递增或递减,可以用双端队列实现(deque),队列的前面和后面都可以入队出队. 单调队列优化dp: 问题引入: dp[i] = min( a[j] ) ,i-m < j ...

  9. poj 2373(单调队列优化dp)

    在长为L(<=1000000)的草地(可看成线段)上装喷水头,喷射是以这个喷水头为中心,喷水头的喷洒半径是可调节的调节范围为[a,b].要求草地的每个点被且只被一个喷水头覆盖,并且有些连续区间必 ...

最新文章

  1. 机器人x展架制作_门型展架80*180易拉宝x展架海报架广告架立牌展示架地推海报2元优惠券券后价20元...
  2. HanLP二元核心词典详细解析
  3. Swift - 本地消息的推送通知(附样例)
  4. 免费下载精美网站模板的25个网站推荐
  5. Linux环境下增加swap交换分区
  6. 第十期:过去50年间,十大热门语言及发明者大盘点
  7. nodejs连接池连接mysql
  8. 为什么学霸不情愿帮助同学回答问题?
  9. SharedPreferences的制作
  10. Spring框架学习——AOP
  11. Vue3学习笔记(B站李南江)
  12. ph用计算机换算成离子浓度,PH与氢离子的浓度换算表.doc
  13. 算法题目:小于n的最大数
  14. 移植QT5.6到韦东山JZ2240嵌入式开发板(史上最最最最最详细的QT移植教程)
  15. 深度学习利器之自动微分(2)
  16. 编程获得CPU的主频
  17. C/C++ 提权与强制卸载DLL
  18. CVPR2022学习-人脸识别:An Efficient Training Approach for Very Large Scale Face Recognition
  19. pycharm code with me 使用
  20. wayland显示服务器,Ubuntu显示服务器:选Mir还是Wayland?

热门文章

  1. CentOS7安装yum
  2. 基于Android13的系统启动流程分析(三)之FirstStageMain阶段
  3. 怎么看vray渲染进度_【3dmax疑难问题】渲染有进度条但渲染窗口不见了
  4. 【C语言】八道经典指针笔试题(详解)
  5. KEIL的hex与bin文件自动生成到指定目录
  6. 爬虫腾讯地图-5WNBZ-2JYR6-SPUSL-M3WGH-U4KDT-K2FYV
  7. 谷歌浏览器代理服务器有问题
  8. SessionStorage如何存放对象
  9. TypeError: ToTensor() takes no arguments报错显示
  10. Discuz首页最后发表帖子地址伪静态