持续更新——dp的一些技巧

Posted h-lka

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了持续更新——dp的一些技巧相关的知识,希望对你有一定的参考价值。

共菜鸡笔者看的……会慢慢更新,也请看到的大佬留意一眼,指出不足。

  • 对于一些对部分点的二维(dp),状态从左上角继承而来时,对于一个点((x,y)),对它编号(x*m+y),按照这个顺序(dp),可以保证更新当前值之前前面的已经被更新。
  • 善于发掘题目的性质。对于一些一眼看上去没法(dp)的东西,观察题目条件,将无用的状态去除或者确定一种(dp)顺序之类,变成一个经典的(dp)模型。
  • (dp)柿子写完,观察其中有没有类似(i*j)项的东西,看是不是能够斜率优化。推柿子原则:(y)是所有与(j)有关的项,(k)(i*j)项中与(i)有关的部分,(x)(i*j)项中与(j)有关的部分,(b)是只与(i)有关的部分。
  • 斜率优化的时候,观察题目要求的是( ext{max/min})(b)项的(dp[i])的符号,这些是决定凸包方向的重要条件。
  • 斜率优化的时候特别留意决策单调性,如果斜率单调,我们可以做到(O(n))维护决策点;有一些不单调的(比如斜率),就要考虑其他维护决策点的方法。
  • 赋值初始值能不用( ext{memset})就不用……
  • (dp)前捋清方程,推柿子的时候千万注意符号,如果反了就完了

持续( ext{update……})

以上是关于持续更新——dp的一些技巧的主要内容,如果未能解决你的问题,请参考以下文章

一些实战中的小技巧 (持续更新中)

工作中使用的一些技巧总结后续持续性更新

git使用技巧集合(持续更新中)

WebStorm及emmet插件使用中的一些小技巧(持续更新)

在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新。

微信小程序开发技巧总结(持续更新...)