ABC396G 题解
__vector__ · · 题解
这题被恶心了很久,不知道为啥一直没有题解。
做法
显然操作顺序不会影响结果,每一行或每一列最多操作一次。
注意到最多
随后,枚举每一行,如果
考虑将每一行视为一个二进制数。
问题转化为下面的形式:
给定一个长度为
n 的非负整数序列b ,一个整数m ,每个数严格小于2^{m} 。
定义popcount(x) 为x 的二进制表示中1 的个数。
求出\min\limits_{x=0}^{2^m-1}\sum\limits_{i=1}^n\min(popcount(a_i\oplus x),m-popcount(a_i\oplus x)) 。
设
遗憾的是,这样仍然很难设计转移方程,主要难点在于,新加入一位
考虑一些更严格的限制,
转移如下:
另外,初始状态是