线段树优化DP可以按DP方法(刷表法和填表法)分为2类。
如果是填表法那么其实就是一个区间求最值等等的,十分简单。
但是如果是刷表法那么就很难让人想到了,因为刷表法DP其实是没有填表法DP那么思路流畅的。
刷表法就相当于是区间赋值什么的。
线段树优化DP最好的一点在于,即使有O(n^2)个状态吗,如果你只需要求出其中的O(q)个状态,将线段树滚动一下或者直接原地转移,那么空间复杂度是O(n)的,时间复杂度也只是O(qlogn)。
比如BZOJ3585的两种nlogn方法,一种是线段树刷表法,一种是线段树填表法。