USACO 2021 Pt 2 solution
USACO 2021 Pt 2 solution
设\(dp_{i,j,k}\),表示考虑了前i个h,前j个g,后面不能留下一个h/g不匹配的最大值。
其中k=「0,1,2」,分别表示「无限制,不能留h,不能留g」。
转移:
-
\(|x_i-x_j|> K\),可以直接特判这种转移。
-
\(k=0\):
如果要空出了一个h,那么显然需要让一段后面的g全都被匹配,假设区间为[j,z]。那么可以转移到\(dp_{i+1+z-j,z,0}\)。也就是说\([i+2,i+1+z-j]\)和\([j+1,z]\)刚好全部匹配,这个可以预处理得到。
否则一定会空出一个h,有一个重要的发现就是空出h之后后面的限制就只需要考虑那个h了。所以可以转移到\(dp_{i+1,j,2}\)。
-
对于其他情况同理