单调队列优化DP的模板题

不难列出DP方程:

对于买入的情况

由于dp[i][j]=max{dp[i-w-1][k]+k*Ap[i]-j*Ap[i]}

AP[i]*j是固定的,在队列中维护dp[i-w-1][k]+k*Ap[i]的单调性即可

 #include<stdio.h>
 #include<string.h>
 #include<algorithm>
 using namespace std;
 ;
 ]; 

 int main(){
     scanf("%d%d%d", &T, &maxP, &w);
     ; i<=T; i++)
         scanf("%d%d%d%d", &Ap[i], &Bp[i], &As[i], &Bs[i]);
     memset(dp,-,sizeof(dp));
     ; i<=T; i++){
         ; j<=As[i]; j++) dp[i][j]=-Ap[i]*j;
         ; j<=maxP; j++) dp[i][j]=max(dp[i][j], dp[i-][j]);
         >=){
             , tail=;
             ; j<=maxP; j++){
                 while (head<tail && q[head]+As[i]<j) head++;
                 ][j]+j*Ap[i] >= dp[i-w-][q[tail-]]+q[tail-]*Ap[i]) tail--;
                 q[tail++]=j;
                 ][q[head]]-(j-q[head])*Ap[i]);
             }
             head=, tail=;
             ; j--){
                 while (head<tail && q[head]-Bs[i]>j) head++;
                 ][j]+j*Bp[i] >= dp[i-w-][q[tail-]]+q[tail-]*Bp[i]) tail--;
                 q[tail++]=j;
                 ][q[head]]+(q[head]-j)*Bp[i]);
             }
         }
     }
     ;
     ; i<=maxP; i++)
         ans=max(ans, dp[T][i]);
     printf("%d\n", ans);
     ;
 }

bzoj1855: [Scoi2010]股票交易--单调队列优化DP的更多相关文章

  1. 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 ...

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

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

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

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

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

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

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

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

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

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

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

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

  8. BZOJ1855 [Scoi2010]股票交易[单调队列dp]

    题 题面有点复杂,不概括了. 后面的状态有前面的最优解获得大致方向是dp.先是瞎想了个$f[i][j]$表示第$i$天手里有$j$张股票时最大收入(当天无所谓买不买). 然后写了一个$O(n^4)$状 ...

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

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

随机推荐

  1. 【转】Linux IO实时监控iostat命令详解

    转自:http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858810.html 简介 iostat主要用于监控系统设备的IO负载情况,iosta ...

  2. LoadRunner替换字符串(可以同时替换多个)

    在global.h中添加代码 /* * @param char* dest 目标串,也就是替换后的新串 * @param const char* src 源字符串,被替换的字符串 * @param c ...

  3. loadrunner参数化excel数据

    LR参数化数据源Oracle,MSSQL,Excel参数化的方法: 重点介绍excel数据参数化的方法: 1.首先创建excel表格: 注意要写列明   2.创建excel表连接:   参数化完成后, ...

  4. 解决ScrollView嵌到listView冲突问题

    方法一: 把下面的方法放在绑定适配器操作的下面就行. /** * 重新计算ListView的高度,解决ScrollView和ListView两个View都有滚动的效果,在嵌套使用时起冲突的问题 * @ ...

  5. json 入门(1)

    1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,Java arrays和xml和JSON互相转换的包. 2.下载jar包 http:// ...

  6. ZK常用命令

    zkcli脚本命令介绍 zkcli    连接默认zookeeper服务器 zkcli -server ip:port    连接指定的zookeeper服务器 create -s -e path d ...

  7. ReportViewer报表

    个人感觉ReportViewer>DataGridView>listView 打开一个空的winform窗体程序,工具栏报表拖入 ReportViewer 在空的Form1中 在同一命名空 ...

  8. 【CLR Via C#】第5章 基元类型、引用类型、值类型

    第二遍看这本书,决定记录一下加深印象. 1,基元类型 什么事基元类型?基元类型是直接映射到FrameWork类库(FCL)中存在的类型,编译器直接支持的数据类型.比如int直接映射到System.In ...

  9. http://blog.csdn.net/iamshaofa/article/details/7877785/

    http://blog.csdn.net/iamshaofa/article/details/7877785/

  10. SpringBoot的简单应用以及部署

    1. 项目目录结构