hdu3401
来源:互联网 发布:php json form 编辑:程序博客网 时间:2024/06/03 12:29
hdu3401
题意:给定t天的股票情况,要求出t天后最大的利润。
思路:单调队列优化dp
TIP:可能出现一直不买股票,最终利润为0的最优情况。
#include<cstdio>#include<iostream>#include<cstring>#include<map>#include<set>#include<algorithm>#include<sstream>#include<string>using namespace std;const int N=2007;int t,ma,w;int ap[N],bp[N],as[N],bs[N];int dp[N][N];struct data{ int p,val;}que[N*2],now;int main(){ int T; scanf("%d",&T); while(T--) { scanf("%d%d%d",&t,&ma,&w); for(int i=1;i<=t;i++) { scanf("%d%d%d%d",&ap[i],&bp[i],&as[i],&bs[i]); } for(int i=0;i<=t;i++) { for(int j=0;j<=ma;j++) { dp[i][j]=-99999999; } } for(int i=1;i<=w+1;i++) { for(int j=0;j<=as[i];j++) { dp[i][j]=-ap[i]*(j); } } for(int i=2;i<=t;i++) { for(int j=0;j<=ma;j++) dp[i][j]=max(dp[i][j],dp[i-1][j]); if(i<=w+1) continue; int front,rear; front=0; rear=0; for(int j=0;j<=ma;j++) { now.p=j; now.val=dp[i-w-1][j]+ap[i]*j; while(front<rear&&que[rear-1].val<now.val) { rear--; } que[rear++]=now; while((front==-1)||(front<rear&&que[front].p+as[i]<j)) front++; dp[i][j]=max(dp[i][j],que[front].val-ap[i]*j); } front=0; rear=0; for(int j=ma;j>=0;j--) { now.p=j; now.val=dp[i-w-1][j]+bp[i]*j; while(front<rear&&que[rear-1].val<now.val) { rear--; } que[rear++]=now; while((front==-1)||(front<rear&&que[front].p-bs[i]>j)) front++; dp[i][j]=max(dp[i][j],que[front].val-bp[i]*j); } } int ans=0; for(int i=0;i<=ma;i++) { ans=max(ans, dp[t][i]); } printf("%d\n",ans); } return 0;}
0 0
- hdu3401
- hdu3401
- 【HDU3401】Trade
- 【HDU3401】Trade
- 单调队列 hdu3401 Trade
- 【DP+单调队列】 hdu3401 Trade
- HDU3401 单调队列优化DP
- [单调队列DP] HDU3401 Trade
- Trade-----HDU3401----单调队列优化的DP
- hdu3401 Trade 单调队列优化dp
- [HDU3401]Trade && 单调队列优化DP
- hdu3401 Trade 单调队列优化DP
- hdu3401 Trade [单调队列优化dp]
- 单调队列优化dp [HDU2191][HDU3401][POJ1821]
- hdu3401 Trade(单调队列优化dp)
- 【HDU3401】Trade-单调队列优化DP
- [hdu3401] Trade DP单调队列优化
- HDU3401(dp + 单调队列优化)
- SDK目录结构
- POJ 1083 - Moving Tables
- 四大机器学习降维方法
- React Native商城项目实战08 - 设置“More”界面cell
- SpringMVC的拦截器
- hdu3401
- Openfire Server presence(在线状态)消息处理流程
- java网页爬虫测试源码
- 文件路径及其文件名内容获取
- mysql添加字段,并插入数据。
- 百度竞价网呼代码:怎么在一个页面里面多处输入回拨功能
- Jquery-zTree的基本用法
- Universal-Image-Loader源码阅读(13)-cache/LimitedMemoryCache
- Leetcode 240. Search a 2D Matrix II (Medium) (cpp)