链接:http://codeforces.com/contest/873/ A题: 贪心,把最大的k个数变成x即可. B题: 从左向右枚举右端点,维护balance的最长长度.任意一个子串可以看做两个前缀相减,对于已知当前右端点中1比0多多少个,只需要减去前面的某个前缀,在这个前缀中1比0也多这么多就可以了.所以开一个数组,维护1比0多i个的最左边的前缀的位置. C题: 每一列相互独立单独处理,对于每一列贪心的选择去掉多少个1就可以了(显然只会从前往后逐次去掉). D题: 首先注意到,k是偶数的…