bzoj1855: [Scoi2010]股票交易 dp
2015-03-20 10:22
281 查看
f[i][j] = max{f[t][p] - ap[i] * (j - p),f[t][q] + bp[i] * (q - j)},
且p >= j - as[i], q <= j + bs[i]。
即f[i][j] = max{f[t][p] + ap[i] * p - ap[i] *
j, (1)
f[t][q] + bp[i] * q - bp[i] * j}。 (2)
这样一来,可以发现(1)式中,f[t][p] + ap[i] * p部分,和(2)式中f[t][q] + bq[i] * q部分只与p, q有关,于是可以使用单调队列优化。
且p >= j - as[i], q <= j + bs[i]。
即f[i][j] = max{f[t][p] + ap[i] * p - ap[i] *
j, (1)
f[t][q] + bp[i] * q - bp[i] * j}。 (2)
这样一来,可以发现(1)式中,f[t][p] + ap[i] * p部分,和(2)式中f[t][q] + bq[i] * q部分只与p, q有关,于是可以使用单调队列优化。
#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> #include <cmath> using namespace std; #define maxn 2100 int f[maxn][maxn]; int q[maxn],head,tail; int n,m,w; int main() { scanf("%d%d%d",&n,&m,&w); memset(f,0xcc,sizeof f); f[0][0]=0; int ap,bp,as,bs; for(int i=1;i<=n;i++) { scanf("%d%d%d%d",&ap,&bp,&as,&bs); for(int j=0;j<=m;j++) { f[i][j]=f[i-1][j]; } int p=max(i-w-1,0); head=1;tail=1; q[1]=0; for(int j=1;j<=m;j++) { while(head<=tail&&q[head]<j-as)head++; f[i][j]=max(f[i][j],f[p][q[head]]-ap*(j-q[head])); while(head<=tail&&f[p][q[tail]]+q[tail]*ap<f[p][j]+j*ap) tail--; tail++;q[tail]=j; } q[head=tail=1]=m; for(int j=m-1;j>=0;j--) { while(head<=tail&&q[head]>j+bs)head++; f[i][j]=max(f[i][j],f[p][q[head]]+(q[head]-j)*bp); while(head<=tail&&f[p][q[tail]]+q[tail]*bp<f[p][j]+j*bp) tail--; tail++;q[tail]=j; } } printf("%d\n",f [0]); return 0; }
相关文章推荐
- 【BZOJ1855】[Scoi2010]股票交易 DP+单调队列
- BZOJ 1855 [Scoi2010]股票交易 单调队列优化DP
- BZOJ 1855: [Scoi2010]股票交易:(单调队列优化DP)
- Bzoj1855: [Scoi2010]股票交易
- bzoj1855: [Scoi2010]股票交易
- Bzoj1855: [Scoi2010]股票交易
- BZOJ 1855 [Scoi2010]股票交易
- [bzoj1855][Scoi2010]股票交易_动态规划_单调队列
- bzoj[1855] [Scoi2010]股票交易 ,[2826]Minecraft的世界末日
- [bzoj 1855][SCOI2010]股票交易
- BZOJ 1855 [Scoi2010]股票交易 ——动态规划
- 1855: [Scoi2010]股票交易[单调队列优化DP]
- bzoj1855: [Scoi2010]股票交易
- DP——BZOJ1855/Luogu2569 [SCOI2010]股票交易
- bzoj1855 SCOI2010 股票交易【单调队列优化dp】
- BZOJ1855 [Scoi2010]股票交易 【单调队列优化dp】
- [SCOI2010] 股票交易 (单调队列优化dp)
- 洛谷 [SCOI2010]股票交易 | 单调性DP
- bzoj1855: [Scoi2010]股票交易 单调队列优化dp ||HDU 3401
- [BZOJ1855][Scoi2010]股票交易(DP+单调队列优化)