Jzoj P6305 最小值___单调栈优化dp
题目大意:
分析:
设dpidp_idpi表示分割了前i个,最大能得到的价值
初值:dpi=f(mini=1iai)dp_{i}=f(min_{i=1}^{i}a_i)dpi=f(mini=1iai)
转移就是dpi=dpj+f(mini=j+1iaj)dp_{i}=dp_{j}+f(min_{i=j+1}^{i}a_j)dpi=dpj+f(mini=j+1iaj)
然后用单调栈维护即可
代码:
#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相关推荐
- CF1131 G. Most Dangerous Shark (单调栈优化dp)
文章目录 problem solution code problem solution dpi:dp_i:dpi: 前iii个多米诺骨牌全都倒下的最小花费 li,ril_i,r_ili,ri分别 ...
- CF1131 G. Most Dangerous Shark(DP+单调栈优化)
文章目录 problem solution code problem solution dpi:dp_i:dpi: 前iii个多米诺骨牌全都倒下的最小花费 li,ril_i,r_ili,ri分别 ...
- 单调队列以及单调队列优化DP
单调队列定义: 其实单调队列就是一种队列内的元素有单调性的队列,因为其单调性所以经常会被用来维护区间最值或者降低DP的维数已达到降维来减少空间及时间的目的. 单调队列的一般应用: 1.维护区间最值 2 ...
- AcWing 1089 烽火传递 题解(动态规划—DP—单调队列优化DP)
AcWing 1089 烽火传递 单调队列优化DP,思路比较简单,维护一个保持元素单调递增的单调队列,队首就是第i座烽火台能接收到的,代价最小的方案,加上第i座烽火台的代价就是这座烽火台的最小值 #i ...
- 【单调队列优化dp】jzoj4883灵知的太阳信仰 纪中集训提高B组
[NOIP2016提高A组集训第12场11.10]灵知的太阳信仰 (File IO): input:array.in output:array.out Time Limits: 1000 ms Mem ...
- 『单调队列优化DP』[POI2014]ZAL-Freight
Problem\mathrm{Problem}Problem Upper Bytown和Lower Bytown的火车站通过一条轨道铁路连接. 沿任何一个方向在它们之间行驶都需要s分钟. 但是,离开车 ...
- 2018.09.06 烽火传递(单调队列优化dp)
描述 烽火台是重要的军事防御设施,一般建在交通要道或险要处.一旦有军情发生,则白天用浓烟,晚上有火光传递军情. 在某两个城市之间有 n 座烽火台,每个烽火台发出信号都有一定的代价.为了使情报准确传递, ...
- 算法笔记--单调队列优化dp
单调队列:队列中元素单调递增或递减,可以用双端队列实现(deque),队列的前面和后面都可以入队出队. 单调队列优化dp: 问题引入: dp[i] = min( a[j] ) ,i-m < j ...
- poj 2373(单调队列优化dp)
在长为L(<=1000000)的草地(可看成线段)上装喷水头,喷射是以这个喷水头为中心,喷水头的喷洒半径是可调节的调节范围为[a,b].要求草地的每个点被且只被一个喷水头覆盖,并且有些连续区间必 ...
最新文章
- 机器人x展架制作_门型展架80*180易拉宝x展架海报架广告架立牌展示架地推海报2元优惠券券后价20元...
- HanLP二元核心词典详细解析
- Swift - 本地消息的推送通知(附样例)
- 免费下载精美网站模板的25个网站推荐
- Linux环境下增加swap交换分区
- 第十期:过去50年间,十大热门语言及发明者大盘点
- nodejs连接池连接mysql
- 为什么学霸不情愿帮助同学回答问题?
- SharedPreferences的制作
- Spring框架学习——AOP
- Vue3学习笔记(B站李南江)
- ph用计算机换算成离子浓度,PH与氢离子的浓度换算表.doc
- 算法题目:小于n的最大数
- 移植QT5.6到韦东山JZ2240嵌入式开发板(史上最最最最最详细的QT移植教程)
- 深度学习利器之自动微分(2)
- 编程获得CPU的主频
- C/C++ 提权与强制卸载DLL
- CVPR2022学习-人脸识别:An Efficient Training Approach for Very Large Scale Face Recognition
- pycharm code with me 使用
- wayland显示服务器,Ubuntu显示服务器:选Mir还是Wayland?
热门文章
- CentOS7安装yum
- 基于Android13的系统启动流程分析(三)之FirstStageMain阶段
- 怎么看vray渲染进度_【3dmax疑难问题】渲染有进度条但渲染窗口不见了
- 【C语言】八道经典指针笔试题(详解)
- KEIL的hex与bin文件自动生成到指定目录
- 爬虫腾讯地图-5WNBZ-2JYR6-SPUSL-M3WGH-U4KDT-K2FYV
- 谷歌浏览器代理服务器有问题
- SessionStorage如何存放对象
- TypeError: ToTensor() takes no arguments报错显示
- Discuz首页最后发表帖子地址伪静态