随笔分类 - dp->dp优化
摘要:题目描述: 给出一棵$n(n<=200000)$的树。每个点有一个权值$w$,表示堵上这个点的花费。 $m$组操作,操作一为将点$x$的权值加上一个非负整数$d$,操作二为询问以点$x$为根的子树内堵上所有根到叶节点路径的最小花费。 题解: 设$h[x]$为$x$的所有子节点的最小花费之和。 一眼看
阅读全文
摘要:题目描述 题解: 一个看起来非常人畜无害的$dp$:$$f[i][k]=min(f[j][k]+cost(j,i))+c[i]$$ 中间那个$cost(j,i)$可以通过$cost(j,i-1)$得到,这个东西是动态的。 用线段树维护一下就好了。 代码:
阅读全文
摘要:题目描述 题解: $dp$。 有$$f[r[i]]=min(f[k]+1)$$。 然后用线段树优化转移就好了。 代码:
阅读全文
摘要:题目描述 题解: 我们可以考虑这样一种情况,有一块$10*10$的土地,还有一块$1*1$的土地。 当然将$1*1$的土地合到$10*10$的土地中了。 所以我们可以先按土地$x$值从大到小排序,然后从前向后扫一边,只将不会被完全覆盖的放到处理的集合里。 这样就可以$dp$了。 有$$dp[i]=m
阅读全文
摘要:题目描述 题解: 这是个多重背包,但是一般的复杂度是过不去这题的。 所以有二进制优化和单调队列优化。 二进制优化是将数量$n$化为多个数,而且这些数能表示出$1~n$中的任意数。 怎么保证? 想起二进制,我们可以将$n$分为$1+2+4+8+……+k$,$k$可以是任意数。 单调队列怎么优化? 我们
阅读全文
摘要:题目描述 题解: 应该是个$dp$; $dp[i][j]$表示第$i$个人涂到第$j$块的最大收益。 推一下式子:$$dp[i][j]=max(dp[i-1][j],dp[i][j-1],dp[i-1][k]+(j-k)*p[i])$$ 对于最后面那个式子可以化一下:$$max(dp[i-1][k]
阅读全文
摘要:题目描述 题解: 题目都提示了, 很明显要导一波式子: $$dp[i]=max( dp[i-1] , \frac{ dp[j] } { A[j]*R[j]+B[j] } * (A[i]*R[j]+B[i]))$$ 后面那个东西相当与将第j天的R[j]个A和1个B绑在一起。 $dp[i-1]$没什么好
阅读全文
摘要:题目描述 题解: 这位仁兄您点进来的题解是cdq+点分+斜率优化的。 吐草:细节是真多…… 先推一波式子: $dp[i]=min(dp[j]+(dis[i]-dis[j])*p[i]+q[i])=dis[i]*p[i]+q[i]+min(dp[j]-dis[j]*p[i])$ $min()$里面那个
阅读全文
摘要:这个是题目描述: 题解: 啊啊啊啊啊…… 垃圾分数规划。 垃圾树链剖分。 垃圾斜率优化。 垃圾darkbzoj。 这里才是题解: 我们设那个分数的值=k,那么有 $(yi-k*xi)+(qj-k*pj)=0$ 我们要做的是让k最大。 那么很明显开两颗线段树,每个节点存一个凸包。 鉴于我们要让b值最大
阅读全文
摘要:题目描述 题解: 看起来是个dp。 还需要SAM维护。 还需要单调队列优化。 代码:
阅读全文
摘要:题目大意:给出n个数的数列,其中保证1<=ai<=n,使其分成m份,使得每一段字符集大小相加最大,求最大值。 考场上跪了,回来一想发现是线段树维护dp: 原dp:dp[ i ][ j ] = max ( dp[ j ][ k-1 ] + num[ j+1 ][ i ]); 然后发现线段树可以维护,即
阅读全文
摘要:题目描述 你有一支由 n 名预备役士兵组成的部队,士兵从 1 到 n 编号,要将他们拆分 成若干特别行动队调入战场。出于默契的考虑,同一支特别行动队中队员的编号 应该连续,即为形如(i,i+1,...,i+k)的序列。 编号为 i 的士兵的初始战斗力为 xi ,一支特别行动队的初始战斗力 x 为队内
阅读全文
摘要:题目描述 Pine开始了从S地到T地的征途。 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站。 Pine计划用m天到达T地。除第m天外,每一天晚上Pine都必须在休息站过夜。所以,一段路必须在同一天中走完。 Pine希望每一天走的路长度尽可能相近,所以他希望每一天走的路的长度的方差尽可
阅读全文
摘要:题面: https://www.lydsy.com/JudgeOnline/problem.php?id=1010 一道dp题,需要斜率优化。 代码: P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京。他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容
阅读全文
摘要:https://www.lydsy.com/JudgeOnline/problem.php?id=3437 题干:略。 暴力做法:O(n^2),强行无脑dp。 整解:s1为一维前缀和,s2为二维前缀和(存 b[i]*i) f[i] = min( f[j] + i*(s1[i]-s1[j]) - (s
阅读全文

浙公网安备 33010602011771号