还没写完。
一道看上去不可做的题。
但是一步转化之后,分析就很有条理。
题意
现在有一个
选择一个包含
的子矩阵,将其中元素全部反转,代价为 ; 选择一个包含
的子矩阵,将其中元素全部反转,代价为 ; 选择一个包含
的子矩阵,将其中元素全部反转,代价为 ; 选择一个包含
的子矩阵,将其中元素全部反转,代价为 ;
对于第一题,有
求将所有元素都变成
题解
第一题:
发现二操作和三操作都可以使用
这个时候发现可能不太好做,这个时候就有一个神奇转化了。
对于
其中对于
那么
此时 1 操作相当于将
4 操作相当于将
考虑这个时候,如果 4 操作被做了两次,那么
这告诉我们,4 操作最多被执行一次。
那么这就好做了,考虑先求出所有的
然后若存在
这样 F1 就做完了。代码。
第二题:
首先还是能发现操作二三显然没用,然后考虑还是使用上面的转化。
考虑如果有两次 4 操作在同一行,那么就相当于使用
列同理。这说明不会有 4 操作在同一行或同一列。
再来考虑,若
考虑在
会发现在
那么这说明,我们应该尽可能多做满足条件的 4 操作。
这就简单了,直接建二分图跑最大匹配就好了。
范围不大,跑个匈牙利就好了,
代码。