今天学习了一下2-sat,差分约束系统,kmp。
由于kmp之前学习过了,就复习了一下,看了一下模板。
2-sat,一般是给出一些bool值的序列A,有很多限制,每个限制最多对两个元素进行。看了一些题,感觉这类题的关键就是找出这些限制,然后添加有向边,实际上就是找出冲突的关系,然后在他们之间添加上边,最后跑一遍模板就可以了。难点是怎么转化为有向边。
差分约束系统,一般有线性约束,区间约束,未知条件约束。它的解有三种,有解,无解,无限解。对于线性约束,一般是在一维空间中给出一些变量(一般定义位置),然后告诉你某两个变量的约束关系,求两个变量a和b的差值的最大值或最小值。其他的约束也是找出两个变量的约束关系。这种题的重点在于如何构造差分约束系统,构造完之后,就变成了最短路的问题,明白最短路算法的核心就知道了,他和差分约束条件又关系,然后跑一遍最短路,即可,但是遇到负环图什么的就需要谨慎选择最短路算法,s'pfa。
kmp算法的核心就是去和求next数组的方法。