ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

动态规划

2019-03-23 09:52:58  阅读:327  来源: 互联网

标签:插头 kx max 切点 方点 动态 规划 dp


dp凸优化:

\(1.\)对于一个很难求的函数\(f(x)\),我们发现他是凸函数(导函数单调/差分值单调),且\(g(x,k)=f(x)-kx\)的极值好算,且能知道取极值的时候\(x\)的值,那么我们可以凸优化(\(wqs\)二分)。
\(2.\)用一条直线去切这个凸包,可以方便的求出切点:
\(对于直线\)y=kx+b\(,切点就是在\)(x,f(x))\(中选取使\)b\(最大的点,由,\)max(b)=max(y-kx)=max(f(x)-kx)\(可得,切点横坐标是所有点都向下平移\)kx$后的最高点。
\(3.\)求得切点后,根据切点与所求点位置的关系更新斜率,重复这个过程。

动态dp:

大致思想:将dp的转移转化成矩阵的乘法,从而可以快速的进行动态的修改。
流程:
把矩阵乘法转变成
\[C_{i,j}=MAX_k\{A_{i,k}+B_{k,j}\}\]
然后把dp方程变形成重链上序列的形式。
对于每一次修改,在重链上更新dp值。

状压dp:

如何记状态P4363 【九省联考2018】一双木棋chess.用一个二进制数表示轮廓线,长\(n+m\)位,含有\(n\)个1和\(m\)个00,轮廓线从右上走到左下,二进制中一位\(1\)表示向下\(1\)格,\(0\)表示向左\(1\)格

插头dp:

普通版:二进制\(0/1\)维护是否有插头,讨论合并。
进阶1.0:题目的限制使得不能任意合并插头,要保留插头在上部的部分信息,那么就要(用最小表示法等+\(hash\)表)记录,但是效率会变低。
进阶2.0:根据题目性质用(括号匹配等)更加优化的方法来记录信息。
进阶3.0:在空间(也可以加hash优化)&打代码时间允许的情况下,用\(2\)的次幂作为进制,利用二进制操作加快速度。
广义的括号匹配:把中间的插头设为\()(\),独立的插头设为\(()\),这样可以区分该不该合并,但是要注意合并的时候修改插头很麻烦。
Problems:P2109 [NOI2007]生成树计数

基环树 & 仙人掌dp:

建立圆方树,在圆方树上\(dp\),如果两点之间只有一条边,不建方点。考虑转移:
1.圆点更新圆点:树上dp
2.圆点不更新方点。
3.方点不与方点相连。
4.方点更新圆点:把所有这个环中的点拿出来跑环上dp。
要死了:仙人掌剖分?静态仙人掌
仙人掌分治?跳蚤国王下江南600行?

组合容斥+dp:

树形dp:

所求问题是链,在转移的同时维护,一条链替换另一条的时候,两条链组合更新答案。
值域

其他套路:

用函数表示状态:斜率是整数,函数为下(上)凸壳,维护所有拐点(表示斜率增加/减少1)的位置,转移就是合并两个拐点集合。例题

dp优化:

\(1.\)推式子使得\(f\)数组周围形式相同把常数和\(f\)数组合并成新的\(dp\)数组。
\(2.\)
\[f[l,r]=max(a[l,r],max_{i=l}^r\{min(f[l,i],f[i,r])\})\]
枚举答案\(T\),如果\(a[l,r]>T\),\(l\)到\(r\)连边,最后
看能否联通\(1,n\)。

标签:插头,kx,max,切点,方点,动态,规划,dp
来源: https://www.cnblogs.com/Smeow/p/10582589.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有