题目链接

  首先这题可以肯定的是朴素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. python基础教程总结1——列表和元组

    1.序列 python含有6种内建序列——列表,元组,字符串,Unicode字符串,buffer对象,xrange对象 2.通用序列操作 2.1 索引 注:   input()根据用户输入变换相应的类 ...

  2. 【转载】Alpha、Beta、RC、GA版本的区别

    转自:http://www.blogjava.net/RomulusW/archive/2008/05/04/197985.html Alpha:是内部测试版,一般不向外部发布,会有很多Bug.一般只 ...

  3. 用Windows Native API枚举所有句柄及查找文件句柄对应文件名的方法

    枚举所有句柄的方法 由于windows并没有给出枚举所有句柄所用到的API,和进程所拥有的句柄相关的只有GetProcessHandleCount这个函数,然而这个函数只能获取到和进程相关的句柄数,不 ...

  4. Spring IoC与DI(依赖注入)

    Spring Ioc 所谓控制反转,即将传统的需要代码进行的操作,交由Spring容器来做.下面以添加book为例进行比较一下: BookService.java public interface B ...

  5. Unicode与ASCiI之间有什么区别?java当中的转义字符 Character类的使用 String类的使用

    ASCII码 称为 美国标准信息交换码 (American standard code of Information Interchange) 其中一共有多少个码?2的7次幂 128个 Unicode ...

  6. iOS 通过storyboard设置UIView或者其他layer图层的圆角

    通常我们给Button或者UIView添加圆角是通过如下代码进行实现的 self.button.layer.cornerRadius=10; 但是如果你是使用的故事版或者xib进行设计视图的话,实际上 ...

  7. Codevs1082 线段树练习 3

    题目描述 Description 给你N个数,有两种操作: 1:给区间[a,b]的所有数增加X 2:询问区间[a,b]的数的和. 输入描述 Input Description 第一行一个正整数n,接下 ...

  8. kmp和hash 字符串处理 哈希表

    来自http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html 并进行自己的简单整 ...

  9. MyBatis的mapper.xml文件的参数问题:org.apache.ibatis.builder.IncompleteElementException: Could not find parameter map

    配置参数类型有两种选择,即:parameterType和parameterMap 不管参数是否是基本数据类型还是map类型,都是使用parameterType. 版权声明:本文为博主原创文章,未经博主 ...

  10. 3.layhm框架的流程与Boot类启动

    思路 在项目根目录里新建好对应的目录 cmd里在项目根目录里,composer init初使化,一路回车 把要自动加载的文件和目录定在composer.json文件的autoload里,file是自动 ...