大型补档计划

题目链接

\(f[i][j]\) 表示前 \(i\) 天,手里有 \(j\) 个股票挣得最多钱

买股票。枚举 \(u < i - W\)

\(f[i][j] = max(f[u][k] - (j - k) * AP[i]) = max(f[u][k] + k * AP[i]) - j * AP[i]\)

满足 \(j - AS[i] <= k < j\)

设 \(pre[k]\) 为 \(f[1 ~ i - W][k]\) 的前缀 \(Max\) 维护即可。

剩下的用单调队列。

维护 \(pre[k] - k * AP[i]\) 递减的序列即可。

卖股票\(P\),枚举 \(u < i - W, j < k <= BS[i] + j\)

\(f[i][j] = f[u][k] + (k - j) * BP[i] = max(f[u][k] + k * BP[i]) - j * BP[i]\)

维护 \(pre[k] + k * AP[i]\) 递减的序列即可。

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
const int N = 2005;
int T, maxP, W, AP[N], BP[N], AS[N], BS[N];
int f[N][N], pre[N], q[N]; int main() {
int ans = 0;
memset(f, 0xcf, sizeof f);
memset(pre, 0xcf, sizeof pre);
pre[0] = 0;
scanf("%d%d%d", &T, &maxP, &W);
for (int i = 1; i <= T; i++) scanf("%d%d%d%d", AP + i, BP + i, AS + i, BS + i);
for (int i = 1; i <= T; i++) {
int hh = 0, tt = 0;
q[0] = 0;
for (int j = 1; j <= maxP; j++) {
while (hh <= tt && q[hh] < j - AS[i]) hh++;
if (hh <= tt) f[i][j] = pre[q[hh]] + q[hh] * AP[i] - j * AP[i];
while (hh <= tt && pre[q[tt]] + q[tt] * AP[i] <= pre[j] + j * AP[i]) tt--;
q[++tt] = j;
}
hh = 0, tt = 0;
q[0] = maxP;
for (int j = maxP - 1; ~j; j--) {
while (hh <= tt && q[hh] > BS[i] + j) hh++;
if (hh <= tt) f[i][j] = max(f[i][j], pre[q[hh]] + q[hh] * BP[i] - j * BP[i]) ;
while (hh <= tt && pre[q[tt]] + q[tt] * BP[i] <= pre[j] + j * BP[i]) tt--;
q[++tt] = j;
}
for (int j = 0; j <= maxP; j++) {
if (i - W >= 1) pre[j] = max(pre[j], f[i - W][j]);
ans = max(ans, f[i][j]);
}
}
printf("%d\n", ans);
return 0;
}

AcWing 332. 股票交易的更多相关文章

  1. 贪心 CF 332 C 好题 赞

    题目链接: http://codeforces.com/problemset/problem/332/C 题目意思: 有n个命令,要通过p个,某主席要在通过的p个中选择k个接受. 每个任务有两个值ai ...

  2. 最多两次股票交易-Best Time to Buy and Sell Stock III

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  3. 【BZOJ1855】股票交易(动态规划,单调队列)

    [BZOJ1855]股票交易(动态规划,单调队列) 题面 BZOJ 题解 很显然,状态之和天数以及当天剩余的股票数有关 设\(f[i][j]\)表示第\(i\)天进行了交易,剩余股票数为\(j\)的最 ...

  4. [SCOI2010]股票交易

    题目大意: 网址:https://www.luogu.org/problemnew/show/P2569 大意:在接下来的T天中,每天股票有一个买入价格Api与卖出价格Bpi. 同时,每天买入股票数与 ...

  5. 腾讯机试题 AcWing 603 打怪兽

    题目链接:https://www.acwing.com/problem/content/605/ 题目大意: 略 分析: 用dp[i][j]表示用j元钱能在前i只怪兽上所能贿赂到的最大武力值. 有一种 ...

  6. <我的股票交易知识汇总与个人感悟_v1.0 (By geman)>

    书在这里 一个完整的股票交易包括选股.买股.持股.卖股四个阶段. 右侧交易,顶是跌出来的,底是涨出来的 一定要敢于止损,设好止损位,严格执行,即使踏空也无怨无悔:资金安全第一位 坚持只买处于上升通道的 ...

  7. AcWing 143. 最大异或对

    https://www.acwing.com/problem/content/145 #include <iostream> #include <algorithm> usin ...

  8. 1855: [Scoi2010]股票交易[单调队列优化DP]

    1855: [Scoi2010]股票交易 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1083  Solved: 519[Submit][Status] ...

  9. 【BZOJ1855】[Scoi2010]股票交易 DP+单调队列

    [BZOJ1855][Scoi2010]股票交易 Description 最近lxhgww又迷上了投资股票,通过一段时间的观察和学习,他总结出了股票行情的一些规律. 通过一段时间的观察,lxhgww预 ...

随机推荐

  1. python杂乱知识点

    1. =  == is =: ==:比较 值是否相等 is:比较,比较的是内存地址 2. id(内容):得到内容的起始内存地址 3.数字,字符串,存在小数据池的概念,如果如果创建了一样的数字或者字符串 ...

  2. 理解Java对象:要从内存布局及底层机制说起,话说….

    前言 大家好,又见面了,今天是JVM专题的第二篇文章,在上一篇文章中我们说了Java的类和对象在JVM中的存储方式,并使用HSDB进行佐证,没有看过上一篇文章的小伙伴可以点这里:<类和对象在JV ...

  3. Tomcat AJP 文件包含漏洞复现(CVE-2020-1938)

    漏洞原理 Tomcat配置了两个Connecto,它们分别是HTTP和AJP. HTTP默认端口为8080,处理http请求:AJP默认端口8009,用于处理 AJP 协议的请求. AJP比http更 ...

  4. 面试官:小伙子,你给我讲一下java类加载机制和内存模型吧

    类加载机制 虚拟机把描述类的数据从 Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制. 类的生命周期 加载(Loadi ...

  5. 修改pycharm中的flask项目名遇到的坑

    曾修改过自己的项目名,并在settings中的解释器也更正过来了.然后执行pip list 报错: failed to create process. 解决方法如下: 到你的项目的venv目录下的Sc ...

  6. [COCI2016-2017#1] Mag

    [COCI2016-2017#1] Mag 题解 题目TP门 题目描述 你将获得一棵由无向边连接的树.树上每个节点都有一个魔力值. 我们定义,一条路径的魔力值为路径上所有节点魔力值的乘积除以路径上的节 ...

  7. CorelDRAW常用工具之手绘工具

    对于平面设计师来说,一个好用顺手的手绘工具是必不可少的,CorelDRAW的手绘工具能将手绘笔触转换成平滑的线条或者形状. 1.基础操作 CorelDRAW的手绘工具组包含手绘.2点线.贝塞尔.钢笔. ...

  8. FL studio系列教程(二):水果的强大功能

    作为音乐人,在电脑上进行编曲,混音,合成是家常便饭,而市面上大家常用的音乐编曲制作软件很多,小编在这里就给大家做一个推荐. 大家常听到的音乐编曲制作软件大多是Cubase.Nuendo.Pro Too ...

  9. appium服务器参数

    appium服务器初始化参数 Appium服务器初始化参数(功能) 设置能力 能力参数项 获取appPackage与appActivity 查看当前活动名称 使用uiautomatorviewer定位 ...

  10. MySql学习笔记--详细整理--上

    目录 MySql MySql安装 连接数据库 操作数据库 数据库的列类型 数据库的字段属性 创建数据库 修改删除表 数据管理 外键 DML语言 添加 修改 删除 DQL查询数据(重点) 查询 去重 w ...