大型补档计划

题目链接

\(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. java8-lambda-list中字符出现字数的统计

    @Test public void testStringCount(){ List<String> moidList1 = new ArrayList<>(); moidLis ...

  2. dpkg 批量卸载

    dpkg -l |grep deepin|awk '{print $2}'|xargs sudo dpkg -P

  3. redis源码学习之slowlog

    目录 背景 环境说明 redis执行命令流程 记录slowlog源码分析 制造一条slowlog slowlog分析 1.slowlog如何开启 2.slowlog数量限制 3.slowlog中的耗时 ...

  4. Shodan搜索引擎详解及Python命令行调用

    shodan常用信息搜索命令 shodan配置命令 shodan init T1N3uP0Lyeq5w0wxxxxxxxxxxxxxxx //API设置 shodan信息收集 shodan myip ...

  5. SQL注入实战新手教程

    本文章仅用于网络安全交流学习,严禁用于非法用途,否则后果自负 一.如何批量找SQL注入(工具+资源都打包):http://www.liuwx.cn/post-149.html 1.SQL注入点搜索关键 ...

  6. kali 系列学习01 - 安装、vmtools、ssh服务和共享文件夹

    Kali介绍Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统.面向专业的渗透测试和安全审计,超过300个渗透测试工具一.安装 1.在虚拟机中安装,详见 https: ...

  7. 运维自动化之1 - ansible 批量主机管理

    2000 - 2016 年,维护的小型机.linux刚开始的2台增加到上千台,手工检查.日常版本升级需要管理太多设备,必须通过运维自动化实现 特别是版本升级,需要到同类机器部署代码.起停设备,必须在一 ...

  8. wordpress 博客环境安装

    WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内容管理系统(CMS)来使用. 1.数据库环境 ...

  9. 面试官:小伙子,说一说Java多线程有哪些创建方式吧

    第一种 继承Thread类 自定义类,继承Thread类,并重写run()方法. class MyThread1 extends Thread { @Override public void run( ...

  10. 带你体验Folx的智能化下载功能

    BT下载器,也就是种子下载器,其优点是下载的人越多,下载的速度就越快,可以更快速地下载热门资源.这是因为,每个下载种子的用户,在下载的同时,也会上传资源,从而加速其他用户的下载速度. Folx软件,作 ...