18十一正睿笔记

dp

决策单调性

前提:满足四边形不等式
i&lt;a&lt;b&lt;ji&lt;a&lt;b&lt;ji<a<b<j
w(i,b)+w(a,j)&lt;w(i,j)+w(a,b)w(i,b)+w(a,j)&lt;w(i,j)+w(a,b)w(i,b)+w(a,j)<w(i,j)+w(a,b)
相当于决策点是不降的。

把序列分成k段,每段的价值为w(i,j)w(i,j)w(i,j)
ex:和的平方
dpi,k=min(dpj,k−1+w(j,i)).dp_{i,k}=min(dp_{j,k-1}+w(j,i)).dpi,k=min(dpj,k1+w(j,i)).
知道了dp有决策单调后,可以分治
solve(l,r,optl,optr)solve(l,r,opt_l,opt_r)solve(l,r,optl,optr)
求出mid=l+r&gt;&gt;1mid=l+r&gt;&gt;1mid=l+r>>1的opt(for一遍),然后递归下一层。同时这个东西在每一层支持莫队一样的统计方式,强行把指针跳到想要的位置。
然而这个做法需要上一层用来转移的都算出来了,,,,
如果是形如fi=min(fj+w(j,i))f_i=min(f_j+w(j,i))fi=min(fj+w(j,i))的方程
可以用单调栈,栈中存每个决策点决策的段,每次出现一个新的决策点,和栈顶的元素二分找位置。

斜率优化

一般写成dpi=min/max(aj+bj∗ci)+didp_i=min/max(a_j+b_j*c_i)+d_idpi=min/max(aj+bjci)+di
首先不管did_idi,把(bjb_jbj,aja_jaj)看成平面上的点。撞到点时在y轴上的截距就是这个点的贡献,拿一条斜率为-cic_ici的线从下往上移动,第一个撞到的就是最小值。显然这些点只会在下凸壳上,找出下凸壳可以二分找点。

图论

冷知识== dag的反图dfs出栈序列是一个合格的拓扑序列
一个拓扑序要求1最靠前,再让2最靠前,等价于反图最大字典序
每个正则二分图(所有点度数相同)都有完美匹配
霍尔定理:对于一个二分图对于左边任意一个点集,出边点集的siz>=点集大小,那么这个图有完美匹配。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值