E48 单调队列优化DP Watching Fireworks is Fun
视频链接:456 单调队列优化DP Watching Fireworks is Fun_哔哩哔哩_bilibili
CF372C Watching Fireworks is Fun
时间:O(nm)
#include <iostream> #include <cstring> #include <algorithm> #define LL long long using namespace std; const int N=150010,M=310; LL n,m,d,a[M],b[M],ti[M]; LL f[2][N],q[N]; int main(){ cin>>n>>m>>d; //n个位置, m个烟花, 移动d个距离 for(int i=1; i<=m; i++) cin>>a[i]>>b[i]>>ti[i]; //地点a, 快乐b, 时刻ti memset(f,-0x3f,sizeof(f)); for(int i=1;i<=n;i++) f[0][i]=0; for(int i=1;i<=m;i++){ //第i烟花 int now=i&1,last=(i-1)&1; int h=1,t=0; for(int j=1;j<=n;j++){ //第j位置 窗口右滑 while(h<=t && f[last][q[t]]<=f[last][j]) --t; q[++t]=j; if(q[h]<j-(ti[i]-ti[i-1])*d) ++h; f[now][j]=f[last][q[h]]+b[i]-abs(a[i]-j); } h=1,t=0; for(int j=n;j>=1;j--){ //第j位置 窗口左滑 while(h<=t && f[last][q[t]]<=f[last][j]) --t; q[++t]=j; if(q[h]>j+(ti[i]-ti[i-1])*d) ++h; f[now][j]=max(f[now][j],f[last][q[h]]+b[i]-abs(a[i]-j)); } } LL ans=-1e18; for(int i=1;i<=n;i++) ans=max(f[m&1][i],ans); cout<<ans; }
#include <iostream> #include <cstring> #include <algorithm> #define LL long long using namespace std; const int N=150010,M=310; LL n,m,d,a[M],b[M],ti[M]; LL f[2][N],q[N]; int main(){ cin>>n>>m>>d; //n个位置, m个烟花, 移动d个距离 for(int i=1; i<=m; i++) cin>>a[i]>>b[i]>>ti[i]; //地点a, 快乐b, 时刻ti memset(f,-0x3f,sizeof(f)); for(int i=1;i<=n;i++) f[0][i]=0; for(int i=1;i<=m;i++){ //第i烟花 int now=i&1,last=(i-1)&1; int h=1,t=0; for(int j=1;j<=n;j++){ //第j位置 窗口右滑 while(h<=t && q[h]<j-(ti[i]-ti[i-1])*d) ++h; while(h<=t && f[last][q[t]]<=f[last][j]) --t; q[++t]=j; f[now][j]=f[last][q[h]]+b[i]-abs(a[i]-j); } h=1,t=0; for(int j=n;j>=1;j--){ //第j位置 窗口左滑 while(h<=t && q[h]>j+(ti[i]-ti[i-1])*d) ++h; while(h<=t && f[last][q[t]]<=f[last][j]) --t; q[++t]=j; f[now][j]=max(f[now][j],f[last][q[h]]+b[i]-abs(a[i]-j)); } } LL ans=-1e18; for(int i=1;i<=n;i++) ans=max(f[m&1][i],ans); cout<<ans; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战