题解:[USACO21JAN] Spaced Out S
link。
做法
很巧妙的一道题。
看到题目第一眼,自然认为是 DP,实则不然,先把结论甩上来:要么行,要么列,总有至少一个是交替的。根据这个结论直接对于行交替放牛的情况和列交替放牛的情况取最大值即可,有了结论想必大家都会写。
然后来简要的证明一下:采用反证法,问题变为能否构造一个放牛的方案使得行列都不交替。行不交替,所以任意一行内要有一个连牛(##),发现只能形如此式的构造:
#..
#..
...
##.
发现不满足条件,得补牛。需要在 \((3,2)\) 处补一头,此时不满足条件,容易发现,无论在中间去填多少行空白,最后在补牛时总要关联到两边。也就是说:若行和列都有交替,在补牛时总会出现一个牛的“三联通”的牛。
要是想不明白去想 DP 还是很容易 g 的,所以以后碰到题一定要先考虑推性质。

浙公网安备 33010602011771号