2019 February S
P5541 [USACO19FEB]Sleepy Cow Herding S
对于求最小值,我们只要找到一段区间所包含的奶牛数量最多即可(还要特判一下移动后还是端点的情况)
对于求最大值,我们考虑 $ a_0 \to a_1$ 和 $ a_{n-1} \to a_n$ 的两个端点间隙。
我们的第一步先“牺牲”其中的一个端点间隙,所以我们不能把任何一头牛移到这个缺口中。除了这一个缺口之外,我们要确保一头奶牛移动后在队列中 \(a_0\) 和 \(a_{n-1}\) 之间的每一个空地。
P5542 [USACO19FEB]Painting The Barn S
通过观察题目可以发现,本题的实质为二维区间修改,最后在查询有几个点值与 \(k\) 相同
因为是最后查询,所以我们可以用二维差分解决本题
P5543 [USACO19FEB]The Great Revegetation S
通过观察题目可以发现,每组奶牛喜爱的牧场草的种类都是被捆绑在一起的(即确定了一个牧场中的草就可以确定另一个牧场种什么草)。
不难想到,我们可以将这一些具有捆绑关系的牧场并到一个集合中进行维护。那么这个集合中的牧场种的草就有两种方案。
我们可以用并查集维护这些集合,通过计算可以得到最终的答案为 \(2^{集合数量}\) 。
另外,还要暴力模拟一遍牧场种的草判断是否有无解情况,若在标记过程中发现矛盾,即为无解。