HDU 3401 Trade (单调队列优化DP)
来源:互联网 发布:ssr centos 一键 编辑:程序博客网 时间:2024/05/16 12:01
http://acm.hdu.edu.cn/showproblem.php?pid=3401
#include<iostream>#include<cstdio>#include<cstring>#include<queue>using namespace std;#define N 2399#define inf 0xfffffffstruct data{ int v,k; bool operator<(data a)const { return v>a.v; } data(int a=0,int b=0) { v=a,k=b; }}q[N];int n,maxp,W,AP[N],BP[N],AS[N],BS[N];int dp[N][N];int main(){ int re; cin>>re; while(re--) { cin>>n>>maxp>>W; for(int i=1;i<=n;i++) scanf("%d%d%d%d",AP+i,BP+i,AS+i,BS+i); for(int i=0;i<=n;i++) for(int j=0;j<=maxp;j++) dp[i][j]=-inf; dp[0][0]=0; /// priority_queue<data> q[N],qq[N]; for(int i=1;i<=W+1;i++) for(int j=0;j<=min(AS[i],maxp);j++) dp[i][j]=-AP[i]*j; for(int i=2;i<=n;i++) for(int j=0;j<=maxp;j++) dp[i][j]=max(dp[i][j],dp[i-1][j]); for(int i=W+2 ;i<=n;i++) { for(int j=0;j<=maxp;j++) ; if(i<=W+1) continue; int pre=i-W-1; ///buy int head=0,tail=-1; for(int j=0;j<=maxp;j++) { dp[i][j]=max(dp[i][j],dp[i-1][j]); data tmp=data(dp[i-W-1][j]+j*AP[i],j); // data tmp=q[i-W-1].top(); q[i-W-1].pop(); while(head<=tail&& q[tail].v<tmp.v ) tail--; q[++tail]=tmp; while(head<=tail&& j-q[head].k > AS[i]) head++; if(head<=tail) dp[i][j]=max(dp[i][j], q[head].v -j*AP[i]); } ///sell head=0, tail=-1; for(int j=maxp;j>=0;j--) { dp[i][j]=max( dp[i][j], dp[i-1][j] ); data tmp=data( dp[pre][j]+ j*BP[i], j ); ///data tmp= qq[i-W-1].top(); qq[i-W-1].pop(); while(head<=tail && q[tail].v<tmp.v ) tail--; q[++tail]=tmp; while(head<=tail&& q[head].k-j>BS[i] ) head++; if(head<=tail) dp[i][j]=max(dp[i][j] , q[head].v - j*BP[i] ); } } int ans=0; for(int j=0;j<=maxp;j++) ans=max(ans,dp[n][j]); cout<<ans<<endl; }}
0 0
- hdu 3401 Trade(DP+单调队列优化)
- hdu 3401 Trade 单调队列优化dp
- hdu 3401 Trade 单调队列优化dp
- hdu 3401 Trade(单调队列优化dp)
- HDU 3401 Trade 单调队列优化DP
- HDU 3401 Trade 【DP+单调队列优化】
- HDU 3401 Trade (单调队列优化DP)
- HDU-3401:Trade(dp+单调队列优化)
- HDU 3401 Trade(单调队列优化DP)【模板】
- HDU 3401 Trade(用单调队列优化DP)
- hdu 3401 Trade (单调队列优化)
- hdu-3401-Trade-单调队列优化的DP
- hdu3401 Trade(单调队列优化dp)
- Trade HDU 3401 单调队列DP
- hdu 3401 Trade //单调队列+DP
- HDU 3401 Trade【单调队列+dp】
- hdu 3401 Trade 单调队列+dp
- hdu 3401 Trade dp+单调队列
- php:判断php版本是否大于等于某个版本的方法
- ACM-5
- Android Input设备debug技巧
- Java环境配置速记
- 寻找最美家庭 维护网络安全成国际共识 信息化助力中国改革
- HDU 3401 Trade (单调队列优化DP)
- 堆和栈的区别
- java 静态块、非静态块、静态函数、构造函数 执行顺序
- Hibernate乐观锁与悲观锁
- iOS7下修复界面覆盖问题
- 驱动工程师面试
- 1153 堆栈的使用 括号匹配 表达式求值 (对输入表达式的处理)
- 百度空间:飘动的天空 有些看到的好文章收录在此处就不拷过来了 有兴趣的朋友可以看下
- Java必理解