标签:style for spl 表示 tar none sed while wing
dp[i]表示信息传递到第i个烽火台时花费的最少代价
dp[i]=min(dp[j])+a[i];i-m<=j<=i-1
单调队列优化
const int maxn=1e6+7; int a[maxn],n,m; int dp[maxn],q[maxn]; int main(){ n=read();m=read(); for(int i=1;i<=n;i++) a[i]=read(); int hh=0,tt=0; for(int i=1;i<=n;i++){ if(q[hh]<i-m) hh++; dp[i]=dp[q[hh]]+a[i]; while(hh<=tt&&dp[q[tt]]>=dp[i]) tt--; q[++tt]=i; } int res=0x3f3f3f3f; for(int i=n-m+1;i<=n;i++) res=min(res,dp[i]); cout<<res; return 0; }
标签:style for spl 表示 tar none sed while wing
原文地址:https://www.cnblogs.com/Cutele/p/14306213.html