
单调队列优化DP
FSYo
我不去想是否能够成功,
既然选择了远方,
便只顾风雨兼程
展开
-
NOI.AC CSP-S 模拟 Round 3 简要题解
比赛链接 T1 一看就是整除分块的形式,如何整除分块 发现对于 j≤ij\le\sqrt ij≤i,⌊ij⌋\left \lfloor \frac{i}{j }\right \rfloor⌊ji⌋ 对应这唯一的值,暴力乘 对于 j≥sqrtij\ge sqrt ij≥sqrti,⌊ij⌋\left \lfloor \frac{i}{j }\right \rfloor⌊ji⌋ 的值可能有一段区...原创 2019-10-20 16:41:41 · 303 阅读 · 0 评论 -
股票交易[单调队列优化DP]
传送门 我们用f[i][j] 表示交易到第i天,手上有j个股票的最大收益 对于买入 变一下形 单调队列维护min中的一坨就可以了 #include<bits/stdc++.h> #define N 5005 using namespace std; int f[N][N]; int T,P,w; int a[N],b[N] , c[N],d[N]; int q[N]...原创 2018-11-14 20:34:36 · 286 阅读 · 0 评论 -
干草堆[单调队列优化DP]
传送门 f[i] 表示到第i个时,第i个下面的干草的宽度 很明显宽度越窄,高度越高 需满足 也就是 我们发现,对于k>j>i,若 则j比k优 #include<bits/stdc++.h> #define N 100005 using namespace std; int f[N],g[N],n,a[N],pre[N],q[N]; int m...原创 2018-11-14 21:40:01 · 439 阅读 · 1 评论 -
Fence[单调队列+DP]
传送门 f[i][j] 表示第i个工匠做到j的最大价值 显然j应满足 我们将f[i][j]变形 单调队列维护f[i-1][x]-x*p[i] 每次先将f[i-1][...]合法的()中的放入单调队列 , 每次更新前除去不合法状态() #include<cstdio> #include<algorithm> #define K 150 #defi...原创 2018-11-19 21:27:09 · 263 阅读 · 0 评论 -
Power收集[单调队列+DP]
传送门 将上一轮合法的加进来 , 更新答案之前弹出和重新将后面和发的放进来就可以了 #include<bits/stdc++.h> #define N 4050 using namespace std; int val[N][N],f[N][N]; int n,m,k,t,q[N],ans; int main(){ scanf("%d%d%d%d",&n,&a...原创 2018-11-22 21:56:39 · 268 阅读 · 0 评论 -
选择数字[单调队列+DP]
传送门 我们发现直接dp不好做 其实选的最大值就是总的值减去选的最小值 我们选最小值要保证任意k个选一个,这就是比较显然的dp了 单调队列维护一下就好 #include<bits/stdc++.h> #define N 100050 #define LL long long #define inf 1000000000000000 using namespace st...原创 2018-12-01 21:41:58 · 276 阅读 · 1 评论