斜率优化的中心思想就是利用一次函数的斜率来优化某些 \(DP\) 转移方程。斜率优化的题目状态转移方程通常比单调队列优化更为复杂,同时斜率优化通常也会用到单调队列优化。 以下记录的题目基本上都为斜率优化的模板题。 [SDOI2012]任务安排 题意 本题的题意较为复杂。一台机器需要按顺序处理 \(n ...
分类:
其他好文 时间:
2021-06-22 18:06:41
阅读次数:
0
题目 一个环形公路上总共有N个车站,每站都有若干升汽油(有的站可能油量为零),每升油可以让汽车行驶一千米。 从某个车站出发,一直按顺时针(或逆时针)方向走遍所有的车站,并回到起点。 在一开始的时候,汽车内油量为零,每到一个车站就把该站所有的油都带上(起点站亦是如此),行驶过程中不能出现没有油的情况。 ...
分类:
其他好文 时间:
2021-05-23 23:51:54
阅读次数:
0
大意: 有 N 块连续的木板,并有 K 个工人来粉刷,但不要求全部粉刷。每个工人有三个参数:L,P,S,表示其最多粉刷连续的 L 块木板,并且每粉刷一块木板可获得 P 元,但所粉刷的木板必须包括第 S 块。输出所能获得最大价值。 思路: dp[i][j] 表示第 i 个人粉刷到第 j 块木板,所获得 ...
分类:
其他好文 时间:
2021-03-16 13:54:41
阅读次数:
0
DP相关目录 几个基本 重要的划分依据: “最后”一步 集合划分依据:1. 不重复 2. 不漏 思考方式如下图: 基本模型 数字三角形模型 最长上升子序列模型 背包模型 状态机模型 状态压缩DP 区间DP 树形DP 数位DP 单调队列优化DP 斜率优化DP ...
分类:
其他好文 时间:
2021-03-16 11:58:24
阅读次数:
0
原题链接 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=re ...
分类:
其他好文 时间:
2021-01-21 10:59:48
阅读次数:
0
题意: 拓扑排序,输出字典序最小的。 思路:优先队列优化。 #include <iostream> #include <vector> #include <queue> #include<string.h> using namespace std; int n, m; const int N=1e5 ...
分类:
编程语言 时间:
2020-10-29 10:24:45
阅读次数:
26
题目链接:https://www.acwing.com/video/864/ 给定一个长度为n的序列,问将这个序列分成连续的若干段,每段不超过M的情况下,每段的最大值之和最小是多少? 如果数据范围比较小的话就可以不进行任何优化,用dp[i]表示将[1,i]分成若干段满足条件的情况下每段最大值最小的情 ...
分类:
编程语言 时间:
2020-08-03 12:20:53
阅读次数:
74
prim 先将一个点加入集合中,维护一个dis数组,表示该点距集合中的点的最小距离,每次选取dis的最小值,并把那个点加入集合,更新dis。 可以用优先队列优化 kruskal 把所有的边按边权从小到大排序,利用并查集维护集合关系,对于每条边,若两点不在同一集合,则把两点连接。 Boruvka 假设 ...
分类:
其他好文 时间:
2020-07-27 16:08:42
阅读次数:
75
今天早上换寝室,耽误了一些时间。还是继续复习动态规划。 单调队列优化dp 第一道,宝物筛选。一道多重背包优化题。如果用二进制优化很好做,但时间复杂度是O(nW*logm)。单调队列优化做法如下: 首先做出普通的多重背包的转移方程:f[j]=max{f[j-w*k]+v*k},w为重量,v为价值。 使 ...
分类:
其他好文 时间:
2020-07-15 01:33:13
阅读次数:
111
LINK:股票交易 题目确实不算难 但是坑点挺多 关于初值的处理问题我就wa了两次。 所以来谢罪。 由于在手中的邮票的数量存在限制 且每次买入卖出也有限制。 必然要多开一维来存每天的邮票数量。 那么容易想到$f_{i,j}$表示到了第$i$天有$j$张邮票的最大赚钱值。 每次需要间隔W天进行操作 W ...
分类:
其他好文 时间:
2020-07-14 16:34:00
阅读次数:
60