P3120 [USACO15FEB]牛跳房子(线段树优化$dp$($CDQ$分治))

${\color{cyan}{>>Question}}$

很容易想到朴素方程,令$f[i][j]$表示到$i$行,$j$列的方案数

$$f[i][j] = \sum f[k][l]\;(k<i,l<j,a[k][l] \neq a[i][j])$$

但显然是$O(n^4)$的,其实这看起来就想二维偏序,但实际它有三个条件,可以$CDQ$分治(但我不会)

考虑吧方程换个形式,令$sum = \sum f[k][l]\;(k<i,l<j)$,$x = \sum f[k][l]\;(k<i,l<j,a[k][l] = a[i][j])$

$$f[i][j] = sum - x$$

(类似那道染色的思想)

可以一行一行地推(就能省掉一维),令$sum[i]$

猜你喜欢

转载自www.cnblogs.com/mzg1805/p/11398123.html