线性dp
Boxxxxxxx
只与自己做对比。
展开
-
洛谷P3667 [USACO17OPEN]Bovine Genomics G 动态规划
在这里,我们不二分,也不哈希,纯dp。但是复杂度真不行可以知道,什么时候一个连续区间可以作为答案呢?前N个串称之为A集合,后N 个串称集合B。假设这个连续区间是[L,R],长度是len,只有对于任意一个A中的串,在L位置与B中所有的串一一去比对,最长的相同的部分的的长度最多只能达到len - 1.上面一段话是最重要也是我们dp的基础,为什么最长只能达到len - 1,如果最长相等部分达到len也就是[L,R]整个都一样,那么根据题意来说这是一个非法的连续区间,不能够作为答案。设f[i][j][z]原创 2020-11-24 19:26:26 · 212 阅读 · 0 评论 -
洛谷P2255 动态规划
一种dp的解法首先对于每一个节目都是看与不看的问题,可以选择对开始时间排序后,按顺序考虑每一个节目,排序后优秀的地方在于,你考虑一个节目的时候,最优解的选取方法里,在你当前节目之前会选取到的节目都是在这个顺序之前会出现,这样就让一个无序的节目强行有序了起来。先对时间去离散化,由于数据范围是在太小,所以很暴力的可以设计dp的转移方程F[i][j][z]代表当前判断到第i个节目,第一台机子的下一次可录制时间为j,第二台机子的下一次可录制时间为z。方程有了后我们考虑转移,当前的节目可以选或者不选,如果不选那原创 2020-07-09 21:58:31 · 240 阅读 · 0 评论 -
CF960F CDQ分治
首先,这不是正解,甚至歪的很过分,你还要吸氧,但是我就是要发。根据题意我们可以知道首先要求转移的路径编号的转移必须是从小到大转移的权值必须从小到大一条边的终点转移到另一条边的起点,起点终点需要相同我的思路是什么呢,这是三个要求,而且头两个要求很二维偏序对不对,那么第三个要求我们可以稍稍强行转移一下然后上CDQ分支路径编号是连续的已经是由于数据顺序的问题处理掉了,我们在处理某一条路径的时候可以先把前面所有线段先处理完...原创 2020-06-13 06:47:06 · 252 阅读 · 0 评论 -
CF346B kmp+dp
这道题应该是比较典型的利用kmp去dp的题目。我们思考题意他要求我们的子序列不能够和virus串完全匹配,那么我们就可以在原先求最长公共子序列的基础上在加一个维度。就是f[i][j][z],第一个串枚举到i,第二个串枚举到j,然后他们与virus串匹配的长度是z。接下来思考转移。第一个串当做A数组,第二个串当做B数组即当(A[i] == B[j])的时候可以在原先已经有的子序列基础上加上字符A[i],这个时候与virus匹配到的长度是z。那么这个长度z是由谁转移来的?这个地方需要kmp去预处理。原创 2020-06-06 10:25:08 · 305 阅读 · 0 评论 -
CF229D 动态规划dp
因为我菜所以只能想到消耗空间大,时间复杂度差的做法但是我就是要发!!首先这种题需要知道他是个dp(看不出来就GG),然后思考下怎么做,首先他是会进行区间合并,并且可以进行连续的合并,也就是把这个过程看做是一个连续区间合并的过程例:123456[1,2] [3,4,5] [6]可以将一个序列分解为若干个区间(区间长度可以为0),但是区间必须是连续的,不能说你1和3去合并在一起,这是不允许的。知道他是这样一个过程后要干嘛呢,我们可以设计dp转态设 f[i][j] 表示[1,i]的序列都合法后,第原创 2020-06-01 21:53:26 · 266 阅读 · 0 评论 -
洛谷p2569 二进制优化多重背包 dp
看题解都是单调队列,其实那个单调队列优化的过程,就是在一个单调队列优化多重背包的过程。因为我们第i天是可以买一定数量的股票,或者卖一定数量。但是直接枚举一个一个股票的加是复杂度爆炸。f[i][j],表示第i天拥有j个股票的最大收益,在这个地方其实看着就很多重背包好吗!!!!!板子,大板子!!!所以就在买多少/卖多少股票的部分可以用二进制去优化多重背包,这样子就变成log的时间,其他题解的单调队列实...原创 2020-04-28 21:20:05 · 266 阅读 · 0 评论 -
cf721 C DP
题目大意:给你个有向无环图,询问从1到n的路径里面,时间小于T的,但是路过点数是最多的路径。求点数n,m只有5000,所以大胆一点,n^2的算法就冲上去。题目要什么我们的dp就设计什么。设f[i][j]有两个权值v1,fa;意义是从1走到i走过了j个点的最小权值。走到i点的前一个点是fa。那么只要做一次拓扑排序,拓扑排序后就可以做一个线性的dp。不做拓扑会可能发现某个点还没被更新但是你就在...原创 2020-03-18 17:58:10 · 174 阅读 · 0 评论 -
牛客练习赛59 E 石子搬运 dp+三分法
有n堆石子,第i堆石子的石子数量是ai{a_{i}}ai,作为牛客网的一头领头牛,牛牛决定把这些石子搬回牛客。如果牛牛一次搬运的石子数量是k{k}k,那么这堆石子将对牛牛产生k2{k^{2}}k2的负担值。牛牛最多只能搬运m{m}m次,每次搬运可以从一堆石子中选出一些石子搬回牛客,每次搬运不能同时从两堆石子中选取石子,每次只能搬运整数个石子。牛牛是一只聪明的牛,他想出了一种搬运计划可以最小化他搬...原创 2020-03-14 13:53:49 · 364 阅读 · 0 评论