题目链接

  首先这题可以肯定的是朴素DP秒出。然后单调队列优化因为没接触过所以不会emmm

  而且脑补没补出来

  坐等四月省选倒数第一emmm

  心态爆炸,偷懒放题解链接

#include<cstdio>
#include<cstring>
#include<cctype>
#include<cstdlib>
#include<algorithm>
#define maxn 2020
#define INF 0x7fffffff
using namespace std;
inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} int f[maxn][maxn];
struct Day{
int vali,valo,numi,numo;
}q[maxn]; struct File{
int que[maxn*],h,t;
File(){h=;t=;}
void clear(){h=;t=;}
}s;
int ans;
int main(){
memset(f,-/,sizeof(f));
int n=read(),m=read(),w=read();
for(int i=;i<=n;++i)
q[i]=(Day){read(),read(),read(),read()};
for(int i=;i<=n;++i) f[i][]=;
for(int i=;i<=n;++i){
for(int j=;j<=q[i].numi;++j) f[i][j]=max(f[i-][j],-j*q[i].vali);
for(int j=m;j>=;--j) f[i][j]=max(f[i][j],f[i-][j]);
if(i-w-<) continue;
int last=i-w-;
s.clear();
for(int j=;j<=m;++j){
while(s.h<=s.t&&s.que[s.h]<j-q[i].numi) s.h++;
while(s.h<=s.t&&f[last][s.que[s.t]]+s.que[s.t]*q[i].vali<=f[last][j]+j*q[i].vali) s.t--;
s.que[++s.t]=j;
f[i][j]=max(f[i][j],f[last][s.que[s.h]]-q[i].vali*(j-s.que[s.h]));
}
s.clear();
for(int j=m;j>=;--j){
while(s.h<=s.t&&s.que[s.h]>j+q[i].numo) s.h++;
while(s.h<=s.t&&f[last][j]+q[i].valo*j>=f[last][s.que[s.t]]+s.que[s.t]*q[i].valo) s.t--;
s.que[++s.t]=j;
f[i][j]=max(f[i][j],f[last][s.que[s.h]]+q[i].valo*(s.que[s.h]-j));
}
}
for(int i=;i<=m;++i) ans=max(ans,f[n][i]);
printf("%d",ans);
return ;
}

【Luogu】P2569股票交易(单调队列优化DP)的更多相关文章

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

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

  2. bzoj1855: [Scoi2010]股票交易--单调队列优化DP

    单调队列优化DP的模板题 不难列出DP方程: 对于买入的情况 由于dp[i][j]=max{dp[i-w-1][k]+k*Ap[i]-j*Ap[i]} AP[i]*j是固定的,在队列中维护dp[i-w ...

  3. 【bzoj1855】 [Scoi2010]股票交易 单调队列优化DP

    上一篇blog已经讲了单调队列与单调栈的用法,本篇将讲述如何借助单调队列优化dp. 我先丢一道题:bzoj1855 此题不难想出O(n^4)做法,我们用f[i][j]表示第i天手中持有j只股票时,所赚 ...

  4. SCOI 股票交易 单调队列优化dp

    这道题 我很蒙.....首先依照搞单调队列优化dp的一般思路 先写出状态转移方程 在想法子去优化 这个题目中说道w就是这一天要是进行操作就是从前w-1天转移而来因为之前的w天不允许有操作!就是与这些天 ...

  5. bzoj1855: [Scoi2010]股票交易 单调队列优化dp ||HDU 3401

    这道题就是典型的单调队列优化dp了 很明显状态转移的方式有三种 1.前一天不买不卖: dp[i][j]=max(dp[i-1][j],dp[i][j]) 2.前i-W-1天买进一些股: dp[i][j ...

  6. LUOGU P2569 [SCOI2010]股票交易(单调队列优化dp)

    传送门 解题思路 不难想一个\(O(n^3)\)的\(dp\),设\(f_{i,j}\)表示第\(i\)天,手上有\(j\)股的最大收益,因为这个\(dp\)具有单调性,所以\(f_i\)可以贪心的直 ...

  7. BZOJ 1855 股票交易 - 单调队列优化dp

    传送门 题目分析: \(f[i][j]\)表示第i天,手中拥有j份股票的最优利润. 如果不买也不卖,那么\[f[i][j] = f[i-1][j]\] 如果买入,那么\[f[i][j] = max\{ ...

  8. BZOJ1855 股票交易 单调队列优化 DP

    描述 某位蒟佬要买股票, 他神奇地能够预测接下来 T 天的 每天的股票购买价格 ap, 股票出售价格 bp, 以及某日购买股票的上限 as,  某日出售股票上限 bs, 并且每次股票交 ♂ 易 ( 购 ...

  9. 股票交易——单调队列优化DP

    题目描述 思路 蒟蒻还是太弱了,,就想到半个方程就GG了,至于什么单调队列就更想不到了. $f[i][j]$表示第$i天有j$张股票的最大收益. 那么有四种选择: 不买股票:$f[i][j]=max( ...

  10. 2018.09.10 bzoj1855: [Scoi2010]股票交易(单调队列优化dp)

    传送门 单调队列优化dp好题. 有一个很明显的状态设置是f[i][j]表示前i天完剩下了j分股票的最优值. 显然f[i][j]可以从f[i-w-1][k]转移过来. 方程很好推啊. 对于j<kj ...

随机推荐

  1. setup命令

    setup——配置网络(centos) 命令所在路径:usr/bin/setup 示例1: # setup

  2. 使用JS的画布制作一个瞄准镜

    <canvas width="600" height="500" id="myCanvas"></canvas> & ...

  3. HDU 4741 Save Labman No.004 (几何)

    题意:求空间两线的最短距离和最短线的交点 题解: 线性代数和空间几何,主要是用叉积,点积,几何. 知道两个方向向量s1,s2,求叉积可以得出他们的公共垂直向量,然后公共垂直向量gamma和两线上的点形 ...

  4. 《实战Python网络爬虫》- 感想

    端午节假期过了,之前一直在做出行准备,后面旅游完又休息了一下,最近才恢复状态. 端午假期最后一天收到一个快递,回去打开,发现是微信抽奖中的一本书,黄永祥的<实战Python网络爬虫>. 去 ...

  5. modelformset

    class StudyRecordDeialView(View): def get(self, request, class_record_id): class_record_obj = models ...

  6. 关键字final

    final数据 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改:如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象.再次赋值将引起编译报错. 当f ...

  7. 10GNU C语言函数调用

    6. C 函数调用机制概述 ​ 在 Linux 内核程序 boot/head.s 执行完基本初始化操作之后,就会跳转区执行 init/main.c 程序.那么 head.s 程序时如何把执行控制转交给 ...

  8. LeetCode之Weekly Contest 93

    第一题:二进制间距 问题: 给定一个正整数 N,找到并返回 N 的二进制表示中两个连续的 1 之间的最长距离. 如果没有两个连续的 1,返回 0 . 示例 1: 输入:22 输出:2 解释: 22 的 ...

  9. laravel中redis各方法的使用

    在laravel中使用redis自带方法的时候会发现许多原生的方法都不存在了,laravel对其进行了重新的封装但是在文档中并没有找到相关的资料最后在 \vendor\predis\predis\sr ...

  10. 使用laravel框架的eloquent\DB模型连接多个数据库

    1.配置.env文件 DB_HOST_TRAILER=127.0.0.1DB_PORT_TRAILER=3306DB_DATABASE_TRAILER=htms_trailerDB_USERNAME_ ...